Date.UTC()

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

Date.UTC() 静态方法接受表示日期和时间组件的参数,这些参数与 Date 构造函数类似,但将其视为 UTC。它返回自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数。

试一试

const utcDate1 = new Date(Date.UTC(96, 1, 2, 3, 4, 5));
const utcDate2 = new Date(Date.UTC(0, 0, 0, 0, 0, 0));

console.log(utcDate1.toUTCString());
// Expected output: "Fri, 02 Feb 1996 03:04:05 GMT"

console.log(utcDate2.toUTCString());
// Expected output: "Sun, 31 Dec 1899 00:00:00 GMT"

语法

js
Date.UTC(year)
Date.UTC(year, monthIndex)
Date.UTC(year, monthIndex, day)
Date.UTC(year, monthIndex, day, hours)
Date.UTC(year, monthIndex, day, hours, minutes)
Date.UTC(year, monthIndex, day, hours, minutes, seconds)
Date.UTC(year, monthIndex, day, hours, minutes, seconds, milliseconds)

参数

表示年份的整数值。值为 099 的,映射到 19001999 年。所有其他值表示实际年份。请参阅 示例

monthIndex 可选

表示月份的整数值,从 0(一月)到 11(十二月)。默认为 0

day 可选

表示月份中的日期的整数值。默认为 1

hours 可选

表示一天中小时的整数值,介于 023 之间。默认为 0

minutes 可选

表示时间中分钟部分的整数值。默认为 0

seconds 可选

表示时间中秒部分的整数值。默认为 0

milliseconds 可选

表示时间中毫秒部分的整数值。默认为 0

返回值

一个表示给定日期的 时间戳 的数字。如果日期 无效,则返回 NaN

描述

值为 099 的年份将被转换为 20 世纪的年份 (1900 + year)。例如,95 将被转换为 1995 年。

UTC() 方法与 Date() 构造函数在三方面有所不同:

  1. Date.UTC() 使用通用时间而不是本地时间。
  2. Date.UTC() 返回一个数字格式的时间值,而不是创建一个 Date 对象。
  3. 当传入单个数字时,Date.UTC() 将其解释为年份而不是时间戳。

如果参数超出预期范围,UTC() 方法会更新其他参数以适应该值。例如,如果 monthIndex 使用 15,则年份将增加 1 (year + 1),月份将使用 3

由于 UTC()Date 的一个静态方法,您应始终将其用作 Date.UTC(),而不是您创建的 Date 对象的某个方法。

示例

使用 Date.UTC()

以下语句创建一个 Date 对象,其中参数被视为 UTC 而非本地时间。

js
const utcDate = new Date(Date.UTC(2018, 11, 1, 0, 0, 0));

Date.UTC() 单个参数的行为

Date.UTC() 在只接受一个参数时,过去的行为不一致,因为实现只保持与 Date() 构造函数一致的行为,后者不将单个参数解释为年份数字。现在要求实现将省略的 monthIndex 视为 0,而不是将其强制转换为 NaN

js
Date.UTC(2017); // 1483228800000

规范

规范
ECMAScript® 2026 语言规范
# sec-date.utc

浏览器兼容性

另见