linux Shell:如何使用%N或%3N正确格式化毫秒[已关闭]

ryhaxcpt  于 2023-05-16  发布在  Linux
关注(0)|答案(1)|浏览(242)

**关闭。**这个问题是not about programming or software development。目前不接受答复。

这个问题似乎不是关于a specific programming problem, a software algorithm, or software tools primarily used by programmers的。如果你认为这个问题与another Stack Exchange site的主题有关,你可以留下评论,解释在哪里可以回答这个问题。
6天前关闭。
Improve this question
我试图返回的日期与毫秒与3个小数位。但是,打印出来的日期看起来像这样2023-05-09T15:36:23.3N。它在末尾打印“3N”而不是毫秒。
我现在使用的是date +%Y-%m-%dT%T.%3N。即使当我删除3只是为了获得默认的小数位数时,它仍然只是打印出一个“N”。

x6yk4ghg

x6yk4ghg1#

bash >= 5:

$ echo ${EPOCHREALTIME}
1683669018.026445
           ^^^^^^
        microseconds

或者

now=$EPOCHREALTIME sec=${now%[,.]*} msec=${now#*[,.]}
printf '%(%Y-%m-%d %H:%M:%S.)T%.3s\n' "$sec" "$msec"
2023-05-10 00:22:59.432
                    ^^^
                milliseconds

带有GNU日期:

$ date '+%Y-%m-%d %H:%M:%S.%3N'
2023-05-09 23:04:28.423
                    ^^^
               milliseconds

使用Perl(仅内置模块):

perl -MPOSIX -MTime::HiRes=time -e '
    my $t = time;
    printf "%s.%03d\n", 
        POSIX::strftime("%Y-%m-%d %H:%M:%S",
        localtime($t)), 1000*($t - int($t)
    )
'
2023-05-09 23:04:28.423
                    ^^^
                milliseconds

如果需要GMT时间,请将localtime替换为gmtime

相关问题