bash,从午夜开始以毫秒为单位获取当前时间

时间:2013-04-23 12:35:36

标签: bash time milliseconds

有没有办法在bash中获得当前毫秒过夜?如果有办法完全用bash做,那时间戳的精确度有多好或多坏?

2 个答案:

答案 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'