【问题标题】:How get the time in milliseconds in FreeBSD?如何在 FreeBSD 中以毫秒为单位获取时间?
【发布时间】:2011-03-03 10:36:23
【问题描述】:

在 Linux 中,我可以使用以下命令以毫秒为单位找到当前时间:

date +%s%N

但在 FreeBSD 上我只能得到

[13:38 ]#date +%s%N
1299148740N

如何在 FreeBSD 中获取以毫秒(或纳秒)为单位的时间?

【问题讨论】:

  • echo $((`date +%s`*1000)) 毫秒或*1000000000 纳秒。
  • 我不想加零,我想知道确切的毫秒数。或许,PERL 上有解决方案吗?

标签: shell freebsd


【解决方案1】:

这里是任何最近的 Perl 的单行代码:

perl -MTime::HiRes=gettimeofday -MPOSIX=strftime -e '($s,$us) = gettimeofday(); printf "%d.%06d\n", $s, $us'
1487594425.611120

(从this answer修改为类似问题)

【讨论】:

    【解决方案2】:

    使用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;
    }
    

    【讨论】:

    • 这是一个 shell 问题,而不是 C 问题。
    【解决方案3】:

    BSD date 命令不支持毫秒。如果您想要支持毫秒的date,请安装 GNU coreutils 软件包。

    我在 OS X 上遇到过这个问题,其date 来自 BSD。解决方案是brew install coreutilsln -sf /usr/local/bin/gdate $HOME/bin,并确保$HOME/binPATH 中排在第一位。

    【讨论】:

      【解决方案4】:

      尝试使用来自daemontoolstai64n

      $ 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
      

      【讨论】:

        【解决方案5】:

        获取毫秒的另一种方法是使用 Python:

        time_ms=$( python3 -c'import time; print(time.time())' )
        echo $time_ms
        

        输出:

        1570807434.2774572
        

        请注意,python 2.x 仅返回 100 分之一秒。如果您的操作系统仅使用 Python 2.x 以获得更多粒度,则可能需要稍作调整。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-25
          • 1970-01-01
          • 2023-02-08
          相关资源
          最近更新 更多