如何在 bash 中将日期转换为自 Unix 纪元以来的毫秒数?

如何在 bash 中将日期转换为自 Unix 纪元以来的毫秒数?

我有一个日期格式:

22-Sep-2014 10:32:35

我需要一个 13 位时间戳,但是当我这样转换时

time=$(date -d "$DATE" '+%s')

我得到一个 10 位数字

当我尝试时

tt=$(date -d "$DATE");
time=$($tt +'%s * 1000 + %-N / 1000000')

我明白了

line 22: Mon: command not found

答案1

您的第二次尝试已经很接近了,只需要告诉date命令在末尾添加毫秒即可。您可以使用%N格式化程序来完成此操作。%N扩展到纳秒,然后您可以使用 截断它%3N
但请注意,您的示例输入时间没有任何毫秒,因此您可以添加.000到末尾。
假设这不是您想要的,这里有一个提供毫秒精度的示例:

$ DATE="22-Sep-2014 10:32:35.012"
$ date -d "$DATE" +'%s.%3N'
1411396355.012

相关内容