Data类型将日期保存为自协调世界时间, 时间 1970 年 1 月 1 日午夜(零时)至今所 经过的毫秒数。使用这种存储格式,Date
类型可以精确表示 1970 年 1 月 1 日之前及之后 285616 年的日期。
使用new操作符来调用Data构造函数
let now = new Date();
在不给 Date 构造函数传参数的情况下,创建的对象将保存当前日期和时间。 要基于其他日期和时 间创建日期对象,必须传入其毫秒表示(UNIX 纪元 1970 年 1 月 1 日午夜之后的毫秒数)。ECMAScript 为此提供了两个辅助方法:Date.parse()和 Date.UTC()。
Date.parse()方法接收一个表示日期的字符串参数,尝试将这个字符串转换为表示该日期的毫秒 数。
所有实 现都必须支持下列日期格式:
● “月/日/年”,如"5/23/2019";
● “月名 日, 年”,如"May 23,2019";
● “周几 月名 日 年 时:分:秒 时区”,如"Tue May 23 2019 00:00:00 GMT-0700";
●ISO 8601 扩展格式“YYYY-MM-DDTHH:mm:ss.sssZ”,如 2019-05-23T00:00:00(只适用于 兼容ES5 的实现)。
比如,要创建一个表示“2019 年 5 月 23 日”的日期对象,可以使用以下代码:
let someDate = new Date(Date.parse("May 23, 2019"));
console.log(someDate)
如果传给 Date.parse()的字符串并不表示日期,则该方法会返回 NaN。如果直接把表示日期的字 符串传给 Date 构造函数,那么 Date 会在后台调用 Date.parse()。换句话说,下面这行代码跟前面 那行代码是等价的:
let someDate = new Date("May 23, 2019");
console.log(someDate);
注意: 不同的浏览器对 Date 类型的实现有很多问题。比如,很多浏览器会选择用当前日
期替代越界的日期,因此有些浏览器会将"January 32, 2019"解释为"February 1, 2019"。Opera
则会插入当前月的当前日,返回"January 当前日, 2019"。就是说,如 果是在 9 月 21 日运行代码,会返回"January
21, 2019"。
Date.UTC()方法也返回日期的毫秒表示,但使用的是跟 Date.parse()不同的信息来生成这个值。 传给 Date.UTC()的参数是年、零起点月数(1 月是 0,2 月是 1,以此类推)、日(131)、时(023)、 分、秒和毫秒。这些参数中,只有前两个(年和月)是必需的。如果不提供日,那么默认为 1 日。其他 参数的默认值都是 0。
Date 类型的 toLocaleString()方法返回与浏览器 运行的本地环境一致的日期和时间。 这通常意味着格式中包含针对时间的 AM(上午)或 PM(下午), 但不包含时区信息(具体格式可能因浏览器而不同)。
let date=new Date()
console.log(date.toLocaleString())
console.log(date.toString() )
Date 类型的 valueOf()方法根本就不返回字符串,这个方法被重写后返回的是日期的毫秒表示。 因此,操作符(如小于号和大于号)可以直接使用它返回的值。比如下面的例子 :
let date1 = new Date(2019, 0, 1); // 2019 年 1 月 1 日
let date2 = new Date(2019, 1, 1); // 2019 年 2 月 1 日
console.log(date1 < date2); // true
console.log(date1 > date2); // false
Date 类型有几个专门用于格式化日期的方法,它们都会返回字符串:
● toDateString()显示日期中的周几、月、日、年(格式特定于实现);
● toTimeString()显示日期中的时、分、秒和时区(格式特定于实现);
● toLocaleDateString()显示日期中的周几、月、日、年(格式特定于实现和地区);
● toLocaleTimeString()显示日期中的时、分、秒(格式特定于实现和地区);
● toUTCString()显示完整的 UTC 日期(格式特定于实现)。
注意: 还有一个方法叫 toGMTString(),这个方法跟 toUTCString()是一样的,目的
是为了向后兼容。不过,规范建议新代码使用 toUTCString()。
Date 类型剩下的方法(见下表)直接涉及取得或设置日期值的特定部分。注意表中“UTC 日期”, 指的是没有时区偏移(将日期转换为 GMT)时的日期。
2025-04-07 16:41:32
日期/时间组件方法