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
,即使推理不一定能确定。
取决于V3,ctime
产生的输出形式
Oct 9 17:32:24\0
V4添加了工作日和年份,围绕上面的格式并生成 仍使用的格式asctime
:
Sun Sep 16 01:03:52 1973\n\0
因此,这种形式似乎是“有机”发展的。最初它只包括月份、月份中的日期和时间。添加工作日和年份后,似乎保留了现有格式,因此在前面添加了工作日,并在后面附加了年份。最后,当添加时区时,它可能被认为与时间而不是年份有关......