有没有办法在bash中获得当前毫秒过夜?如果有办法完全用bash做,那时间戳的精确度有多好或多坏?
答案 0 :(得分:12)
今天午夜你可以:
date -d 'today 00:00:00'
UNIX邮票中的:
date -d 'today 00:00:00' "+%s"
所以,如果你想要有所不同,请执行:
midnight=$(date -d 'today 00:00:00' "+%s")
now=$(date "+%s")
diff_mills=$(( ($now - $midnight) * 1000 ))
因为%s
表示秒,我们必须*1000
才能获得毫秒。
%N
(纳秒):
midnight=$(date -d 'today 00:00:00' "+%s.%N")
now=$(date "+%s.%N")
diff_mills=$(echo "( $now - $midnight ) * 1000" | bc)
答案 1 :(得分:3)
您也可以使用mod而不是明确的日期差异。例如,1秒的分辨率:
millis_since_midnight=$[1000 * ( ( `date "+%s"` - 28800 ) % 86400 )]
请注意,28800是UTC的PST偏移,以秒为单位。这个kludge在像OSX这样具有BSD时间的系统上非常有用,因此无法指定--date 'today 00:00:00'
。