繁体   English   中英

在 JavaScript 中,用于解析特定字符串的正确“时间”类型是什么?

[英]In JavaScript, what is the correct `Temporal` type to use for parsing a particular string?

ECMAScript 的新Temporal提案定义(终于!)一个现代 API,用于处理 JS 中的日期和时间,包括时区安全的算术和非公历。

我知道我可以将 ISO 8601 或 RFC 3339 字符串与Temporal一起使用。 如果我有要解析为 JS 日期/时间对象的字符串数据,我应该使用哪种 Temporal 类型?

要确定应该用于解析字符串的Temporal类,选择其数据模型与字符串中的数据匹配的类型很重要。

  • Temporal.Instant代表一个准确的时间。 它的数据模型是自 1970 年 1 月 1 日 UTC 以来的整数纳秒数。 这种类型不知道时区,并且不提供访问日历/时钟单位(如月或小时)的方法。 这只是一个时间戳。
  • Temporal.ZonedDateTime表示从特定时区的角度来看的准确时间。 它的数据模型是时间戳(如Temporal.Instant )、时区(通常是 IANA 区域)和日历。 需要时区,因为这种Temporal类型(并且只有这种类型)允许 DST 安全地创建派生值。 当您将 1 天添加到Temporal.ZonedDateTime实例时,确切时间通常会晚 24 小时,但如果添加跨越 DST 转换,则可能是 23 或 25。
  • Temporal.PlainDate表示无时区日期:没有时间且不参考时区的本地日期。 它的数据模型是年/月/日和日历。
  • Temporal.PlainMonthDay表示生日、周年纪念日或其他重复事件。 它的数据模型是月、日和日历。
  • Temporal.PlainYearMonth表示特定年份中的一个月,例如 2022 年 1 月。它的数据模型是年、月和日历。
  • Temporal.PlainTime表示一天中无时区的时间:不参考日期、时区或日历的本地时间。 它的数据模型是小时/分钟/秒,秒分辨率低至 9 位十进制数字(纳秒)。
  • Temporal.PlainDateTime表示本地日期和时间,不参考时区。 它的数据模型是年/月/日/时/分/秒和一个日历。 这种类型很少使用,因为上面的类型涵盖了大多数用例。 如果您只关心确切的时间戳而不关心时区,请使用Temporal.Instant 如果您只关心本地日期,请使用Temporal.PlainDate 如果您关心确切的时间和时区,请使用Temporal.ZonedDateTime 除了Temporal.PlainDateTime文档中详述的少数用例之外,大多数情况下最好使用不同的类型。
  • Temporal.Duration表示一段时间。 它的数据模型是若干年、月、日、小时、分钟、秒、毫秒、微秒和纳秒。
  • Temporal.TimeZone代表 IANA 时区,例如Asia/Tokyo或(很少)偏移时区,例如+06:00 其数据模型是时区的规范 ID,例如"Asia/Tokyo""+06:00"
  • Temporal.Calendar表示类似于希伯来语、中文或默认 ISO 8601 日历的日历。 它的数据模型是日历的ID,例如"iso8601""hebrew"

请注意,像'12/25/2022'这样的本地化字符串格式不能被 Temporal 解析。 Temporal 只能解析明确的计算机可读格式,例如'2022-25-12'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM