此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Date.UTC()

基线 广泛可用

自 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, month)
Date.UTC(year, month, day)
Date.UTC(year, month, day, hour)
Date.UTC(year, month, day, hour, minute)
Date.UTC(year, month, day, hour, minute, second)
Date.UTC(year, month, day, hour, minute, second, millisecond)

参数

year

一个表示年份的整数值。

099 的值会被映射到 19001999 年。其他的值则代表实际的年份。参见示例

month 可选

0(一月)到 11(十二月)之间的一个整数,表示月份。从 ECMAScript 2017 开始,如果忽略该值,则默认为 0(直到 ECMAScript 2016,month 都是必须的参数。而从 ES2017 开始,它不再是必须的。)

date 可选

131 之间的一个整数,表示某月当中的第几天。如果忽略该值,则默认为 1

hour 可选

023 之间的一个整数,表示小时。如果忽略该值,则默认为 0

minute 可选

059 之间的一个整数,表示分钟。如果忽略该值,则默认为 0

second 可选

059 之间的一个整数,表示秒。如果忽略该值,则默认为 0

millisecond 可选

0999 之间的一个整数,表示毫秒。如果忽略该值,则默认为 0

返回值

一个数字,表示从 1970 年 1 月 1 日 00:00:00 UTC 到给定时间的毫秒数。

描述

UTC() 方法接受以逗号隔开的时间参数,返回 1970 年 1 月 1 日 00:00:00 UTC 到指定的时间之间的毫秒数。

如果年份被指定为 099 之间,则该方法会将年份转换为 20 世纪的一个年份(即 1900 + year),例如,指定为 95,则年份为 1995

UTC() 方法与 Date 构造函数有两点不同:

  1. Date.UTC() 方法使用协调世界时代替本地时间。
  2. Date.UTC() 方法返回一个时间数值,而不是一个 Date 对象。

如果有一个指定的参数超出其合理范围,则 UTC 方法会通过更新其他参数直到该参数在合理范围内。例如,为月份指定 15,则年份将会加 1year + 1),然后月份将会使用 3

由于 UTC()Date 的一个静态方法,所以应该直接调用 Date.UTC(),而不要把它作为 Date 实例的方法。

示例

使用 Date.UTC()

下面的语句使用 UTC 时间代替本地时间创建了一个 Date 对象。

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

规范

规范
ECMAScript® 2027 Language Specification
# sec-date.utc

浏览器兼容性

兼容性备注

少于两个参数的 Date.UTC()

当向 Date.UTC() 提供少于两个的参数时,ECMAScript 2017 要求返回 NaN。不支持此行为的引擎已被更新(参见 bug 1050755ecma-262 #642)。

js
Date.UTC();
Date.UTC(1);

// Safari: NaN
// Chrome/Opera/V8: NaN

// Firefox <54: non-NaN
// Firefox 54+: NaN

// IE: non-NaN
// Edge: NaN

参见