Linux中是否有shell命令以毫秒为单位获取时间?


当前回答

在OS X上,date不支持%N标志,我建议使用Homebrew安装coreutils。这将使您能够访问一个名为gdate的命令,其行为与Linux系统上的date相同。

brew install coreutils

为了获得更“原生”的体验,你可以把这个添加到你的.bash_aliases中:

alias date='gdate'

然后执行

$ date +%s%N

其他回答

Nano是10−9,milli是10−3。因此,我们可以使用纳秒的前三个字符来得到毫秒:

date +%s%3N

男人约会:

%N纳秒(000000000..999999999) 1970-01-01 00:00:00 UTC以来的%s秒

来源:服务器故障如何在Bash中以毫秒为单位获得当前Unix时间?

我想从bash生成值,并在Java代码中使用该值转换回日期(Java .util)。

以下命令为我在bash文件中生成值:

日期+ % s000

日期+“% T。%N"返回当前时间,单位为纳秒。 06:46:41.431857000 日期+“% T。%6N”返回当前时间,其中纳秒四舍五入到前6位数字,即微秒。 06:47:07.183172 日期+“% T。%3N”返回当前时间,将纳秒四舍五入到前3位数字,即毫秒。 06:47:42.773

通常,date命令格式的每个字段都可以指定可选的字段宽度。

date +%s%N返回秒数+当前纳秒。

因此,echo $(($(date +%s%N)/1000000))就是您所需要的。

例子:

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

Date +%s返回自epoch以来的秒数,如果有用的话。

下面是一个在Linux上以毫秒为单位获取时间的便携式hack:

#!/bin/sh
read up rest </proc/uptime; t1="${up%.*}${up#*.}"
sleep 3    # your command
read up rest </proc/uptime; t2="${up%.*}${up#*.}"

millisec=$(( 10*(t2-t1) ))
echo $millisec

输出结果为:

3010

这是一个非常廉价的操作,它与shell内部程序和procfs一起工作。