Temporal.PlainDateTime.from()

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

Temporal.PlainDateTime.from() 静态方法从另一个 Temporal.PlainDateTime 对象、一个包含日期和时间属性的对象或一个 RFC 9557 字符串创建一个新的 Temporal.PlainDateTime 对象。

语法

js
Temporal.PlainDateTime.from(info)
Temporal.PlainDateTime.from(info, options)

参数

info

以下之一:

  • 一个 Temporal.PlainDateTime 实例,它会创建该实例的副本。
  • 一个 RFC 9557 字符串,包含日期,可选的时间,以及可选的日历。
  • 一个对象,包含由 Temporal.PlainDate.from()calendareraeraYearyearmonthmonthCodeday)或 Temporal.PlainTime.from()hourminutesecondmillisecondmicrosecondnanosecond)识别的属性。该信息应明确指定年份(以 yeareraeraYear 的形式)、月份(以 monthmonthCode 的形式)和日期;其他都是可选的,并将设置为其默认值。
options 可选

包含以下属性的对象

overflow 可选

一个字符串,指定当日期组件超出范围时(使用对象 info 时)的行为。可能的值有:

"constrain"(默认)

日期组件被限制在有效范围内。

"reject"

如果日期组件超出范围,则抛出 RangeError

返回值

一个新的 Temporal.PlainDateTime 对象,表示由 info 在指定的 calendar 中指定的日期和时间。

异常

TypeError

在以下情况之一中抛出

  • info 不是对象或字符串。
  • options 不是对象或 undefined
  • 提供的属性不足以明确确定日期。您通常需要提供 year(或 eraeraYear)、month(或 monthCode)和 day
RangeError

在以下情况之一中抛出

  • 指定相同组件的提供的属性不一致。
  • 提供的非数字属性无效;例如,如果 monthCode 在此日历中从未是有效的月份代码。
  • 提供的数字属性超出范围,并且 options.overflow 设置为 "reject"
  • 该信息不在 可表示范围 内,该范围是距 Unix 纪元 ±(108 + 1) 天,或大约 ±273,972.6 年。

示例

从对象创建 PlainDateTime

js
// Year + month + day + hour + minute + second
const dt = Temporal.PlainDateTime.from({
  year: 2021,
  month: 7,
  day: 1,
  hour: 12,
  minute: 34,
  second: 56,
});
console.log(dt.toString()); // "2021-07-01T12:34:56"

从字符串创建 PlainDateTime

js
const dt = Temporal.PlainDateTime.from("2021-07-01T12:34:56");
console.log(dt.toLocaleString()); // "7/1/2021, 12:34:56 PM" (assuming en-US locale)

有关更多示例,特别是关于不同日历和溢出设置的示例,请参阅 Temporal.PlainDate.from()Temporal.PlainTime.from()

规范

规范
Temporal
# sec-temporal.plaindatetime.from

浏览器兼容性

另见