日期/時間輸入字串會使用以下程序進行解碼。
將輸入字串分解為 token,並將每個 token 分類為字串、時間、時區或數字。
如果數字 token 包含冒號 (:
),則這是一個時間字串。包含所有後續的數字和冒號。
如果數字 token 包含破折號 (-
)、斜線 (/
) 或兩個或多個點 (.
),則這是一個日期字串,可能包含文字月份。如果已經看到一個日期 token,則將其解釋為時區名稱(例如,America/New_York
)。
如果 token 僅為數字,則它是一個單個欄位或一個 ISO 8601 連接的日期(例如,19990113
代表 1999 年 1 月 13 日)或時間(例如,141516
代表 14:15:16)。
如果 token 以加號 (+
) 或減號 (-
) 開頭,則它是一個數字時區或一個特殊欄位。
如果 token 是一個字母字串,請與可能的字串匹配
查看 token 是否與任何已知的時區縮寫匹配。這些縮寫由 第 B.4 節中描述的設定檔提供。
如果找不到,請搜尋內部表格以將 token 匹配為特殊字串(例如,today
)、星期幾(例如,Thursday
)、月份(例如,January
)或雜訊單字(例如,at
、on
)。
如果仍然找不到,則拋出錯誤。
當 token 是一個數字或數字欄位時
如果有八個或六個數字,並且之前沒有讀取過其他日期欄位,則將其解釋為“連接日期”(例如,19990118
或 990118
)。解釋為 YYYYMMDD
或 YYMMDD
。
如果 token 是三個數字並且已經讀取年份,則將其解釋為一年中的第幾天。
如果四個或六個數字並且已經讀取年份,則將其解釋為時間 (HHMM
或 HHMMSS
)。
如果三個或更多數字並且尚未找到任何日期欄位,則將其解釋為年份(這會強制其餘日期欄位的 yy-mm-dd 順序)。
否則,假設日期欄位排序遵循 DateStyle
設定:mm-dd-yy、dd-mm-yy 或 yy-mm-dd。如果發現月份或日期欄位超出範圍,則拋出錯誤。
如果已指定 BC,則將年份取反並加一以進行內部儲存。(格里曆中沒有零年,因此數值上西元前 1 年變為零年。)
如果未指定 BC,並且年份欄位長度為兩位數,則將年份調整為四位數。如果該欄位小於 70,則加上 2000,否則加上 1900。
可以使用帶有前導零的 4 位數字輸入西元 1–99 年(例如,0099
是西元 99 年)。
如果您在文件中看到任何不正確、與特定功能的體驗不符或需要進一步澄清的內容,請使用此表格來報告文件問題。