在UNIX中如何将日期字符串转换为毫秒级时间戳,例如:
19-FEB-12
16-FEB-12
05-AUG-09
我需要这个来将这些日期与服务器当前时间进行比较。
在UNIX中如何将日期字符串转换为毫秒级时间戳,例如:
19-FEB-12
16-FEB-12
05-AUG-09
我需要这个来将这些日期与服务器当前时间进行比较。
将日期转换为自纪元以来的秒数:
date --date="19-FEB-12" +%s
当前时代:
date +%s
所以,由于你的日期是过去式:
NOW=`date +%s`
THEN=`date --date="19-FEB-12" +%s`
let DIFF=$NOW-$THEN
echo "The difference is: $DIFF"
使用BSD的date
命令,您需要:$ date -j -f "%d-%B-%y" 19-FEB-12 +%s
与GNU date
的不同之处:
-j
防止 date
尝试设置时钟-f
显式地设置输入格式-d
)这里介绍一种使用GNU awk
的方式。运行命令如下:
awk -f script.awk file
script.awk
的内容:
BEGIN {
n = systime()
FS="-"
}
{
t = mktime(sprintf("%d %d %d %d %d %d", "20" $3, convert($2), $1, 0, 0, 0))
printf "%.1f days ago\n", (n - t) / 60 / 60 / 24
}
function convert(m) {
return(((index("JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC", m) - 1) / 3) + 1)
}
结果:
358.6 days ago
361.6 days ago
1286.6 days ago