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

问题描述 投票:0回答:1

ECMAScript 的新

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

我知道我可以将 ISO 8601 或 RFC 3339 字符串与

Temporal
一起使用。如果我有字符串数据想要解析为 JS 日期/时间对象,我应该使用哪种 Temporal 类型?

javascript date datetime time ecmascript-temporal
1个回答
3
投票

要确定用于解析字符串的

Temporal
类,选择其数据模型与字符串中的数据相匹配的类型非常重要。

  • Temporal.Instant
    代表准确的时间。 其数据模型是自 1970 年 1 月 1 日 UTC 以来的整数纳秒数。 这种类型不知道时区,并且不提供访问日历/时钟单位(如月或小时)的方法。这只是一个时间戳。
  • Temporal.ZonedDateTime
    表示从特定时区角度来看的准确时间。 它的数据模型是时间戳(如
    Temporal.Instant
    )、时区(通常是 IANA 区域)和日历。 需要时区是因为此
    Temporal
    类型(且仅此类型)允许 DST 安全地创建派生值。 当您向
    Temporal.ZonedDateTime
    实例添加 1 天时,确切时间通常是 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"

请注意,Temporal 无法解析诸如

'12/25/2022'
'25/12/2022'
之类的本地化字符串格式。 Temporal 只能解析明确的计算机可读格式,例如
'2022-12-25'

© www.soinside.com 2019 - 2024. All rights reserved.