Linux中是否有shell命令以毫秒为单位获取时间?
当前回答
当你从4.1版本开始使用GNU AWK时,你可以加载时间库并执行以下操作:
$ awk '@load "time"; BEGIN{printf "%.6f", gettimeofday()}'
这将以秒为单位打印自1970-01-01T00:00:00以来的当前时间,精度为亚秒。
the_time = gettimeofday() Return the time in seconds that has elapsed since 1970-01-01 UTC as a floating-point value. If the time is unavailable on this platform, return -1 and set ERRNO. The returned time should have sub-second precision, but the actual precision may vary based on the platform. If the standard C gettimeofday() system call is available on this platform, then it simply returns the value. Otherwise, if on MS-Windows, it tries to use GetSystemTimeAsFileTime(). source: GNU awk manual
在Linux系统上,标准C函数getimeofday()以微秒精度返回时间。
其他回答
当你从4.1版本开始使用GNU AWK时,你可以加载时间库并执行以下操作:
$ awk '@load "time"; BEGIN{printf "%.6f", gettimeofday()}'
这将以秒为单位打印自1970-01-01T00:00:00以来的当前时间,精度为亚秒。
the_time = gettimeofday() Return the time in seconds that has elapsed since 1970-01-01 UTC as a floating-point value. If the time is unavailable on this platform, return -1 and set ERRNO. The returned time should have sub-second precision, but the actual precision may vary based on the platform. If the standard C gettimeofday() system call is available on this platform, then it simply returns the value. Otherwise, if on MS-Windows, it tries to use GetSystemTimeAsFileTime(). source: GNU awk manual
在Linux系统上,标准C函数getimeofday()以微秒精度返回时间。
纯bash解决方案
自bash 5.0(2019年1月7日发布)以来,您可以使用内置变量EPOCHREALTIME,它包含自epoch以来的秒数,包括小数点后精确到微秒(echo $EPOCHREALTIME输出类似1547624774.371210)。通过移除。最后三个地方是毫秒:
要么使用
(( t = ${EPOCHREALTIME/./} / 1000 ))
或者类似的东西
t=${EPOCHREALTIME/./} # remove the dot (s → µs)
t=${t%???} # remove the last three digits (µs → ms)
无论哪种方式t都是1547624774371。
Perl可以用于此目的,甚至在AIX这样的特殊平台上也是如此。例子:
#!/usr/bin/perl -w
use strict;
use Time::HiRes qw(gettimeofday);
my ($t_sec, $usec) = gettimeofday ();
my $msec= int ($usec/1000);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime ($t_sec);
printf "%04d-%02d-%02d %02d:%02d:%02d %03d\n",
1900+$year, 1+$mon, $mday, $hour, $min, $sec, $msec;
用时间和时区显示日期
日期+"%d-%m-%Y %T "。% N % Z”
输出22
像这样的Python脚本:
import time
cur_time = int(time.time()*1000)