為什麼 0 日是 1 月 0 日?

為什麼 0 日是 1 月 0 日?

如果我使用 格式化列mmm dd hh:mm:ss並將儲存格的值設為0,則它會顯示為Jan 00 00:00:00

這感覺與第 1 部分第 L.2.16.9.1 節相矛盾ECMA-376標準,據稱 Excel 也遵循這一點。

從規格來看:

可以解釋為數值的日期是序列值。它由有符號整數日期部分和無符號小數時間部分組成。隨著時間的推移,序列值的日期部分每天都會增加 1。序列值表示 UTC 日期和時間,因此沒有時區資訊。可以使用三種不同的基數將日期轉換為序列值:

  • 在 1900 日期基系統中,下限為 1 月 1 日 -9999 00:00:00,其序列值為 -4346018。上限為 9999 年 12 月 31 日 23:59:59,序列值為 2,958,465.9999884。此日期基準系統的基準日期是 1899 年 12 月 30 日,其序列值為 0。
  • 在 1900 向後相容資料庫系統中,下限為 1900 年 1 月 1 日 00:00:00,序列值為 1。此日期基準系統的基準日期是 1899 年 12 月 31 日,其序列值為 0。
  • 在 1904 向後相容資料庫系統中,下限為 1904 年 1 月 1 日 00:00:00,序列值為 0。此日期基準系統的基準日期為 1904 年 1 月 1 日,其序列值為 0。

據此,我推測0應該翻譯為 Dec 30, 1899; 1899 年 12 月 31 日;或 1904 年 1 月 1 日;取決於選擇上述哪個系統(Excel 在這裡提供了一些可自訂性)。我在這裡遺漏了一些東西,還是有人解釋了為什麼它偏離了規範?

我使用的是 16.61.1 版本,如果這很重要的話。

答案1

這感覺與 ECMA-376 標準第 1 部分 L.2.16.9.1 節相矛盾

在 1900 向後相容的資料庫系統中,下限為 1900 年 1 月 1 日 00:00:00,序列值為 1

不,這與這部分並不矛盾。下限為序列值1;序列值 0 超出限制,不應使用它,您不能期望使用它來獲得正確的結果。

我可以在中找到這部分日期函數的文檔:

Excel 根據電腦所使用的日期系統解釋年份參數。預設情況下,Microsoft Excel for Windows 使用 1900 日期系統,這表示第一個日期是 1900 年 1 月 1 日。

相關內容