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()
(calendar
、era
、eraYear
、year
、month
、monthCode
、day
)或Temporal.PlainTime.from()
(hour
、minute
、second
、millisecond
、microsecond
、nanosecond
)识别的属性。该信息应明确指定年份(以year
或era
和eraYear
的形式)、月份(以month
或monthCode
的形式)和日期;其他都是可选的,并将设置为其默认值。
- 一个
options
可选-
包含以下属性的对象
overflow
可选-
一个字符串,指定当日期组件超出范围时(使用对象
info
时)的行为。可能的值有:"constrain"
(默认)-
日期组件被限制在有效范围内。
"reject"
-
如果日期组件超出范围,则抛出
RangeError
。
返回值
一个新的 Temporal.PlainDateTime
对象,表示由 info
在指定的 calendar
中指定的日期和时间。
异常
TypeError
-
在以下情况之一中抛出
info
不是对象或字符串。options
不是对象或undefined
。- 提供的属性不足以明确确定日期。您通常需要提供
year
(或era
和eraYear
)、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 |
浏览器兼容性
加载中…