有没有办法在 bash 中获取午夜过后的当前毫秒数?如果有办法完全在 bash 中完成,那么该时间戳的精度有多好或多差?
问问题
8680 次
2 回答
13
您可以通过以下方式获得今天的午夜:
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)
于 2013-04-23T12:44:51.250 回答
3
您也可以使用 mod 而不是明确的日期差异。例如,分辨率为 1 秒:
millis_since_midnight=$[1000 * ( ( `date "+%s"` - 28800 ) % 86400 )]
请注意,28800 是与 UTC 的 PST 偏移量(以秒为单位)。在像 OSX 这样具有 BSD 时间并因此缺乏指定--date 'today 00:00:00'
.
于 2013-07-23T18:44:48.917 回答