如何在 Bash 中获取当前 Unix 时间(以毫秒为单位)?

如何在 Bash 中获取当前 Unix 时间(以毫秒为单位)?

如何获取当前 Unix 时间(以毫秒为单位)(即自 Unix 纪元 1970 年 1 月 1 日以来的毫秒数)?

答案1

这:

date +%s 

将返回自古以来。

这:

date +%s%N

返回秒数和当前纳秒。

所以:

date +%s%N | cut -b1-13

将为您提供自纪元以来的毫秒数 - 当前秒数加上剩下的三纳秒。


以及来自迈克- echo $(($(date +%s%N)/1000000))(除以 1000 只会得到微秒)

答案2

您可以简单地使用%3N将纳秒截断为 3 个最高有效数字(即毫秒):

$ date +%s%3N
1397392146866

这在我的Ubuntu12.04(精准穿山甲)。

但请注意,%N根据你的目标系统,可能无法实现。例如,在嵌入式系统(buildroot rootfs,使用非 HF ARM 交叉工具链编译)上测试时没有%N

$ date +%s%3N
1397392146%3N

(而且我的(非 root 权限) Android 平板电脑也没有%N。)

答案3

date +%N在 OS X 上不起作用,但你可以使用

  • 红宝石ruby -e 'puts Time.now.to_f'
  • Pythonpython -c 'import time; print(int(time.time() * 1000))'
  • Node.jsnode -e 'console.log(Date.now())'
  • PHPphp -r 'echo microtime(TRUE);'
  • 灵丹妙药DateTime.utc_now() |> DateTime.to_unix(:millisecond)
  • 互联网:wget -qO- http://www.timeapi.org/utc/now?\\s.\\N
  • 或四舍五入到最接近的秒数的毫秒数date +%s000

答案4

我只是提出这一点,但我认为正确的除法公式应该是:

echo $(($(date +%s%N)/1000000))

相关内容