Date

為什麼TZ=Asia/Kolkata date --date='1/1/1906' 無效?

  • September 15, 2020

當我執行時:

TZ=Asia/Kolkata date --date="1/1/1906"

我得到:

date: invalid date ‘1/1/1906’

在這裡我可以找到一篇很好的文章: 加爾各答時間

但混淆也來自於 1905 年是一個有效日期這一事實。只有 1906 年不是。任何線索為什麼?

根據時區數據庫(提供其他來源的參考),1906 年 1 月 1 日,加爾各答的當地時間¹從 5:21:10(“馬德拉斯時間”)的偏移量變為 5:30 的偏移量(印度標準時間),這意味著在 1905 年 12 月 31 日和 1906 年 1 月 1 日之間“失去”了 8 分 50 秒。後者從 00:08:50 開始。

$ TZ=Asia/Kolkata date --date="1/1/1906 00:08:49"
date: invalid date ‘1/1/1906 00:08:49’
$ TZ=Asia/Kolkata date --date="1/1/1906 00:08:50"
Mon  1 Jan 00:08:50 IST 1906

僅指定日期預設為 00:00:00,這是無效的。

每當本地時間向前跳時就會發生這種情況,例如當本地時間從“冬季時間”切換到“夏季時間”(或夏令時)時:

$ TZ=Europe/Paris date --date="03/29/2020 02:30"
date: invalid date ‘03/29/2020 02:30’

¹ 就時區數據庫而言,此處的“當地時間”定義為“鐵路時間”,當地火車站的列車時刻表以及其他與鐵路相關的事件所使用的時間。有關詳細資訊,請參閱亞洲數據庫的印度部分。

時區數據庫認為維基百科的“加爾各答時間”(5:53:20)一直使用到 1870 年,當時火車站改為馬德拉斯時間。更令人困惑的是,時區數據庫將 5:53:20 稱為“豪拉標準時間”(有一些疑問),而“加爾各答時間”定義為 5:53:28 的偏移量,一直使用到六月1854 年 28 月(再次,用於鐵路)。

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