该命令将输出以下内容:
date --iso-8601=ns
2025-04-04T12:10:16,045431370+02:00
据man date
记载ns
如下:
-I[FMT], --iso-8601[=FMT]
output date/time in ISO 8601 format. FMT='date' for date only (the default), 'hours', 'minutes', 'seconds',
or 'ns' for date and time to the indicated precision.
令人困惑的是'ns' for date and time to the indicated precision
“指示精度”到底是什么?是什么ns
?
045431370
我特别想知道输出中的数字的含义2025-04-04T12:10:16,045431370+02:00
如何解释045431370
数字?什么是ns
选项?
顺便说一句。我假设+02:00
是指 UTC 偏移量?或者UTC +2
?
ns
这里是纳秒:日期和时间以纳秒精度显示(这是否准确是另一个问题)。您的日期表示 2025 年 4 月 4 日 12:10:16(时、分、秒)和 45431370 纳秒,也就是说,比 UTC 早两个小时,即 45 毫秒、431 微秒和 370 纳秒(因此 UTC 时间为 10:10:16)。GNU
date
手册页没有解释这一点(它只是一个从其输出中得出的存根,date --help
其中大部分内容仍然很短),但完整手册(以 info/dvi/pdf/html 格式提供)可以解释这一点(与在 gnu.org 上可以在线找到的最新版本相同)(参见info -- ls --iso-8601
GNU 系统)。除了使用该
--iso-8601[=FMT]
选项外,您还可以手动指定格式,这样+format
您就可以使用秒部分所需的任意精度,并根据需要将十进制基数字符从,
¹ 更改为英语格式.
。例如:这里显示秒部分(
32.3052
),句号后有 4 位数字(万分之一秒)²。--iso-8601
请注意,、、都不是标准的%N
,%:z
也非可移植的。¹ 逗号是世界上大多数非英语地区使用的十进制基数字符,尽管 ISO8601 允许使用
.
和,
作为第二部分,但它表示,
优先使用 ,这可能是 GNUdate
选择的原因,尽管它的许多其他默认值都是基于美国英语,
。.
² 请注意,(x默认为 9)始终用 0 填充到x 位数字,因此午夜后一毫秒将按您预期的方式显示,而不是不正确的,因为它表示午夜后十分之一秒。
%xN
date +%T.%3N
00:00:00.001
00:00:00.1