Date
日期命令預設美國格式的出處
date
在美國語言環境中似乎有一個非常奇怪的預設格式:Thu Jul 9 17:00:00 EDT 2020
使用空格填充的日期並將(24 小時!)時間放在中間,在月+日和年之間。這是某種標準嗎?它從何而來?
格式在標準中定義,但該標準未指定
en_US
. 它在 POSIX中指定,它只關心 POSIX 語言環境,並聲明當未指定格式化操作數時,POSIX 語言環境中的輸出應等同於指定:
date "+%a %b %e %H:%M:%S %Z %Y"
歷史上(例如在 Unix V7 中),
date
usedasctime
,它使用不同的格式:Sun Sep 16 01:03:52 1973\n\0
POSIX 格式在時間和年份之間添加時區。
我不知道 POSIX 定義格式的歷史,但我想它是故意基於
asctime
-based 格式的。至少可以探索歷史
asctime
,即使推理不一定能確定。直到V3,
ctime
產生的輸出形式Oct 9 17:32:24\0
V4 添加了 weekday 和 year,圍繞上面的格式並生成仍然使用的格式
asctime
:Sun Sep 16 01:03:52 1973\n\0
因此,這種格式似乎是“有機地”增長的。起初它只包括月份、月份中的一天和時間。添加工作日和年份後,似乎保留了現有格式,因此添加了工作日並添加了年份。最後,當添加時區時,它可能被認為與時間而不是年份有關……