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