On this page
B.1.日期/时间 Importing 解释
使用以下过程解码日期/时间 Importing 字符串。
将 Importing 字符串分成令牌,然后将每个令牌分类为字符串,时间,时区或数字。
如果数字标记包含冒号(
:
),则为时间字符串。包括所有后续数字和冒号。如果数字标记包含破折号(
-
),斜杠(/
)或两个或多个点(.
),则这是一个日期字符串,可能具有文本月份。如果已经看到日期令牌,则将其解释为时区名称(例如America/New_York
)。如果令牌仅是数字令牌,则它可以是单个字段,也可以是 ISO 8601 串联日期(例如,1999 年 1 月 13 日为
19990113
)或时间(例如 14:15:16 的141516
)。如果令牌以加号(
+
)或减号(-
)开头,则它可以是数字时区或特殊字段。
如果令牌是字母字符串,请与可能的字符串匹配:
查看令牌是否与任何已知的时区缩写匹配。这些缩写由Section 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 变为零年.)
如果未指定 BC,并且年份字段的长度为两位数,则将年份调整为四位数字。如果该字段小于 70,则添加 2000,否则添加 1900.
Tip
可以使用 4 个带前导零的数字来 Importing 公历 AD 1-99(例如0099
是 AD 99)。