JavaScript 日期格式

在 JavaScript 中可以使用不同的格式输入和展示日期。

在 JavaScript 中可以使用不同的格式输入和展示日期。

JavaScript 日期输入

JavaScript 日期输入格式通常有 3 种类型:

类型 例子
ISO 日期 ”2015-03-25“(国际标准)
ISO 时间 ”11:11:11+08:00“(国际标准)
ISO 日期时间 ”2015-03-25T11:11:11+08:00“(国际标准)
短日期 “03/25/2015”
长日期 “2015 年 3 月 25 日”或“2015 年 3 月 25 日”

JavaScript 标准是支持 ISO 格式日期的。其他的日期格式则可能因浏览器而异。

JavaScript ISO 日期

ISO 8601 是表示日期和时间的国际标准。ISO 8601 格式也是 JavaScript 首选的日期格式。

ISO 日期的格式是 YYYY-MM-DD, 含义如下:

  • YYYY 代表 4 位年份,比如 2021
  • MM 代表月份,比如 01 代表 1 月, 11 代表 11 月
  • DD 代表日,比如 01 代表 1 日, 11 代表 11 日

使用 ISO 日期格式创建日期:

const d = new Date("2015-03-25");

计算出的日期将相对于您坐在的时区。根据不同的时区,上述结果会在 3 月 24 日至 3 月 25 日之间有所不同。

根据年月使用 ISO 日期格式创建日期:

const d = new Date("2015-03");

根据年份使用 ISO 日期格式创建日期:

const d = new Date("2015");

ISO 日期时间

ISO 日期时间的格式是: YYYY-MM-DDTHH:MM:SSZ, 含义如下:

  • YYYY 代表 4 位年份,比如 2021
  • MM 代表月份,比如 01 代表 1 月, 11 代表 11 月
  • DD 代表日,比如 01 代表 1 日, 11 代表 11 日
  • T 标识后面跟的是时间
  • HH 代表小时,采用 24 时制,比如 01 代表凌晨 1 点, 21 代表晚上 9 点
  • MM 代表分钟, 00 - 59
  • SS 代表秒, 00 -99
  • Z 代表零时区,如果在其他时区,比如中国所在的东八区,请用 +08:00 代替 Z
const d = new Date("2015-03-25T12:00:00Z");
const d = new Date("2015-03-25T12:00:00-06:30");

如果在日期时间字符串中省略 T 或 Z , 则可能在不同的浏览器中表现出不同的结果。

时区

设置日期时,不指定时区,JavaScript 将使用浏览器的时区。

获取日期时,不指定时区,结果将转换为浏览器的时区。

JavaScript 短日期。

短日期使用 MM/DD/YYYY 语法编写,如下所示:

const d = new Date("03/25/2015");

YYYY/MM/DD 格式并未定义,一些浏览器会尝试猜测格式。有些会返回 NaN。

const d = new Date("2015/03/25");

DD-MM-YYYY 格式也未定,一些浏览器会尝试猜测格式。有些会返回 NaN。

const d = new Date("25-03-2015");

JavaScript 长日期。

长日期采用的格式是 MMM DD YYYY ,如下所示:

const d = new Date("Mar 25 2015");

月和日可以颠倒:

const d = new Date("25 Mar 2015");

并且,月份可以使用全写 January 或者 缩写 Jan,不区分大小写:

const d = new Date("January 25 2015");
const d = new Date("Jan 25 2015");

也可以使用逗号分隔,名称不区分大小写:

const d = new Date("JANUARY, 25, 2015");

解析日期

如果您有一个有效的日期字符串,您可以使用 Date.parse() 方法将其转换为毫秒。

Date.parse() 返回日期和 1970 年 1 月 1 日之间的毫秒数。

let msec = Date.parse("March 21, 2012");
document.getElementById("demo").innerHTML = msec;

然后,可以使用毫秒数创建日期对象:

let msec = Date.parse("March 21, 2012");
const d = new Date(msec);
document.getElementById("demo").innerHTML = d;