日期命令的起源默认美国格式

日期命令的起源默认美国格式

date在美国语言环境中似乎有一种非常奇怪的默认格式:Thu Jul 9 17:00:00 EDT 2020使用空格填充的月份日期并将(24 小时!)时间放在月+日和年之间的中间。

这是某种标准吗?它从何而来?

答案1

该格式在标准中定义,但该标准未指定en_US.已指定在 POSIX 中,它只关心 POSIX 语言环境,并指出

当未指定格式化操作数时,POSIX 语言环境中的输出应等效于指定:

date "+%a %b %e %H:%M:%S %Z %Y"

历史上(例如在 Unix V7 中),date使用asctime,它使用不同的格式:

Sun Sep 16 01:03:52 1973\n\0

POSIX 格式在时间和年份之间添加时区。

我不知道 POSIX 定义的格式的历史,但我想它是故意基于asctime-based 格式的。

至少可以探索历史asctime,即使推理不一定能确定。

取决于V3ctime产生的输出形式

Oct  9 17:32:24\0

V4添加了工作日和年份,围绕上面的格式并生成 仍使用的格式asctime

Sun Sep 16 01:03:52 1973\n\0

因此,这种形式似乎是“有机”发展的。最初它只包括月份、月份中的日期和时间。添加工作日和年份后,似乎保留了现有格式,因此在前面添加了工作日,并在后面附加了年份。最后,当添加时区时,它可能被认为与时间而不是年份有关......

相关内容