在Linux中,我可以使用以下命令以毫秒为单位查找当前时间:
date +%s%N
但在FreeBSD上我只得到
[13:38 ]#date +%s%N
1299148740N
我该如何在FreeBSD中获取毫秒(或纳秒)级别的时间?
date
命令不支持毫秒。如果您需要支持毫秒的date
,请安装GNU的coreutils
软件包。date
来自BSD。解决方法是brew install coreutils
和ln -sf /usr/local/bin/gdate $HOME/bin
,并确保$HOME/bin
在PATH
中排在第一位。gettimeofday()
函数:#include <stdio.h>
#include <sys/time.h>
int main(void)
{
struct timeval time_now;
gettimeofday(&time_now,NULL);
printf ("%ld secs, %ld usecs\n",time_now.tv_sec,time_now.tv_usec);
return 0;
}
这是一个适用于任何最新版本的Perl的一行代码:
perl -MTime::HiRes=gettimeofday -MPOSIX=strftime -e '($s,$us) = gettimeofday(); printf "%d.%06d\n", $s, $us'
1487594425.611120
(修改自这个答案,针对类似问题)
尝试使用tai64n
来自daemontools
:
$ echo | tai64n | tai64nlocal
2011-03-03 09:45:37.833010500
$ ps | tai64n | tai64nlocal
2011-03-03 09:52:30.817146500 PID TTY TIME CMD
2011-03-03 09:52:30.817150500 7154 pts/1 00:00:07 bash
2011-03-03 09:52:30.817157500 20099 pts/1 00:00:00 ps
2011-03-03 09:52:30.817159500 20100 pts/1 00:00:00 tai64n
2011-03-03 09:52:30.817162500 20101 pts/1 00:00:00 tai64nlocal
获取毫秒的另一种方法是使用Python:
time_ms=$( python3 -c'import time; print(time.time())' )
echo $time_ms
输出:
1570807434.2774572
echo $((\
date +%s`*1000)),如果需要纳秒级时间戳,请使用
*1000000000`。 - Eelvex