Date

日期命令預設美國格式的出處

  • January 25, 2022

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 中),dateused asctime,它使用不同的格式:

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

POSIX 格式在時間和年份之間添加時區。

我不知道 POSIX 定義格式的歷史,但我想它是故意基於asctime-based 格式的。

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

直到V3ctime產生的輸出形式

Oct  9 17:32:24\0

V4 添加了 weekday 和 year,圍繞上面的格式並生成仍然使用的格式asctime

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

因此,這種格式似乎是“有機地”增長的。起初它只包括月份、月份中的一天和時間。添加工作日和年份後,似乎保留了現有格式,因此添加了工作日並添加了年份。最後,當添加時區時,它可能被認為與時間而不是年份有關……

引用自:https://unix.stackexchange.com/questions/687816