B.1.日期/时间 Importing 解释

使用以下过程解码日期/时间 Importing 字符串。

  • 将 Importing 字符串分成令牌,然后将每个令牌分类为字符串,时间,时区或数字。

  • 如果数字标记包含冒号(:),则为时间字符串。包括所有后续数字和冒号。

    • 如果数字标记包含破折号(-),斜杠(/)或两个或多个点(.),则这是一个日期字符串,可能具有文本月份。如果已经看到日期令牌,则将其解释为时区名称(例如America/New_York)。

    • 如果令牌仅是数字令牌,则它可以是单个字段,也可以是 ISO 8601 串联日期(例如,1999 年 1 月 13 日为19990113)或时间(例如 14:15:16 的141516)。

    • 如果令牌以加号(+)或减号(-)开头,则它可以是数字时区或特殊字段。

  • 如果令牌是字母字符串,请与可能的字符串匹配:

  • 查看令牌是否与任何已知的时区缩写匹配。这些缩写由Section B.4中描述的配置文件提供。

    • 如果未找到,请搜索内部表以将令牌与特殊字符串(例如today),日期(例如Thursday),月份(例如January)或干扰词(例如aton)相匹配。

    • 如果仍然找不到,则抛出错误。

  • 当令牌是数字或数字字段时:

  • 如果有八位或六位数字,并且以前没有读取其他日期字段,则将其解释为“连接日期”(例如19990118990118)。解释是YYYYMMDDYYMMDD

    • 如果令牌是三位数字,并且已经读取了一年,则将其解释为一年中的某天。

    • 如果已经读取了四位或六位数字和一年,则将其解释为时间(HHMMHHMMSS)。

    • 如果未找到三位或更多数字并且没有日期字段,请解释为年份(这将强制对其余日期字段进行 yy-mm-dd 排序)。

    • 否则,假定日期字段的排序遵循DateStyle设置:mm-dd-yy,dd-mm-yy 或 yy-mm-dd。如果发现月或日字段超出范围,则引发错误。

  • 如果已指定 BC,则将年份取反,并为内部存储添加一。 (公历中没有零年,因此从数字上 1 BC 变为零年.)

  • 如果未指定 BC,并且年份字段的长度为两位数,则将年份调整为四位数字。如果该字段小于 70,则添加 2000,否则添加 1900.

Tip

可以使用 4 个带前导零的数字来 Importing 公历 AD 1-99(例如0099是 AD 99)。