如何获取当前 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'
- Python:
python -c 'import time; print(int(time.time() * 1000))'
- Node.js:
node -e 'console.log(Date.now())'
- PHP:
php -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))