是否存在可将字符串解析为对应JS Temporal类型的通用函数?
Temporal API 通用ISO 8601字符串解析方案
Temporal API 原生内置了通用解析逻辑,无需自行编写格式判断分支,直接使用全局Temporal对象下的parse()静态方法即可,该方法会自动识别输入ISO 8601字符串的包含字段,返回匹配的Temporal类型实例:
- 仅包含日期字段的字符串(如
'2022-12-25'):返回Temporal.PlainDate实例 - 包含日期+时间字段、无时区信息的字符串(如
'2022-12-25T12:00'):返回Temporal.PlainDateTime实例 - 包含日期+时间+时区偏移+IANA时区标识的字符串(如
'2022-12-25T12:00-08:00[America/Los_Angeles]'):返回Temporal.ZonedDateTime实例 - 仅包含时间字段的字符串(如
'12:00:00'):返回Temporal.PlainTime实例 - 包含时间戳+时区偏移、无IANA时区标识的字符串(如
'2022-12-25T20:00:00Z'):返回Temporal.Instant实例
如果你需要强制把输入解析为指定类型,无需使用通用解析方法,直接调用对应类型的
from()静态方法即可。例如Temporal.PlainDate.from('2022-12-25T12:00')会自动截取日期段生成PlainDate实例,输入不符合目标类型格式要求时会直接抛出错误。
基础用法示例:
// 自动识别类型解析 const plainDate = Temporal.parse('2022-12-25'); console.log(plainDate instanceof Temporal.PlainDate); // 输出 true const plainDateTime = Temporal.parse('2022-12-25T12:00'); console.log(plainDateTime instanceof Temporal.PlainDateTime); // 输出 true const zonedDateTime = Temporal.parse('2022-12-25T12:00-08:00[America/Los_Angeles]'); console.log(zonedDateTime instanceof Temporal.ZonedDateTime); // 输出 true
内容的提问来源于stack exchange,提问作者Justin Grant
相关产品推荐
相关产品推荐

