日期/时间输入字符串使用以下步骤进行解码。
将输入字符串分解为标记,并将每个标记分类为字符串、时间、时区或数字。
如果数字标记包含冒号 (:
),则这是一个时间字符串。 包括所有后续数字和冒号。
如果数字标记包含破折号 (-
)、斜杠 (/
) 或两个或多个点 (.
),则这是一个日期字符串,可能包含文本月份。 如果已经看到日期标记,则将其解释为时区名称(例如,America/New_York
)。
如果标记仅为数字,则它是一个字段或 ISO 8601 连接日期(例如,19990113
代表 1999 年 1 月 13 日)或时间(例如,141516
代表 14:15:16)。
如果标记以加号 (+
) 或减号 (-
) 开头,则它是一个数字时区或特殊字段。
如果标记是字母字符串,则与可能的字符串进行匹配
查看标记是否与任何已知的时区缩写匹配。 这些缩写由 第 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。 (公历中没有零年,因此数字上公元前 1 年变为零年。)
如果未指定 BC,并且年份字段长度为两位数,则将年份调整为四位数。 如果字段小于 70,则加 2000,否则加 1900。
公元 1-99 年的公历年份可以通过使用带有前导零的 4 位数字输入(例如,0099
是公元 99 年)。
如果您在文档中看到任何不正确、与您使用特定功能的体验不符或需要进一步澄清的地方,请使用此表单报告文档问题。