📅  最后修改于: 2023-12-03 15:30:38.289000             🧑  作者: Mango
JavaScript 有很多日期和时间相关的内置函数和对象。但在 ES6 中,有一些新的日期 API 被添加了进来。这些 API 包括更方便的处理日期和时间的方法、更方便的操作和格式化方法、以及更简洁的时区和日期解析方法。本文将会介绍几个 ES6 关于日期操作的新功能。
Date
对象是 JavaScript 中最为常用的日期对象。在 ES6 中,Date
对象得到了一些新的方法。
Date.now()
ES6 引入了一个新的方法 Date.now()
用来获取当前日期的时间戳。它与 new Date().getTime()
等效。
const timestamp = Date.now();
console.log(timestamp); // 返回当前时间的时间戳
Date.prototype.toLocaleDateString()
toLocaleDateString()
方法能够将 Date 对象转换为本地时间格式的字符串。它是 toLocaleString()
方法返回字符串的一部分。
const date = new Date('2019-01-01T00:00:00');
const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
console.log(date.toLocaleDateString('zh-CN', options)); // "2019年1月1日星期二"
console.log(date.toLocaleDateString('en-US', options)); // "Tuesday, January 1, 2019"
Date.prototype.toLocaleString()
toLocaleString()
方法用于把一个时间转换为本地时间格式,并返回该时间的字符串形式。在 ES6 中,它增加了一些可选项参数,用于更加细粒度的控制日期和时间的格式。
const date = new Date('2019-01-01T00:00:00');
const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: true };
console.log(date.toLocaleString('zh-CN', options)); // "2019年1月1日星期二 上午12:00:00"
console.log(date.toLocaleString('en-US', options)); // "Tuesday, January 1, 2019, 12:00:00 AM"
Date.prototype.toISOString()
toISOString()
方法返回一个 ISO 格式的日期字符串,其格式为 YYYY-MM-DDTHH:mm:ss.sssZ
,其中 T
和 Z
是固定的分隔符和时区标识符,在 ISO 8601 标准中规定。
const date = new Date('2019-01-01T00:00:00.000Z');
console.log(date.toISOString()); // "2019-01-01T00:00:00.000Z"
Intl.DateTimeFormat()
对象是处理日期和时间格式化的一种新方法,它提供了一个简单易用且可定制化的 API。
Intl.DateTimeFormat
对象创建一个 Intl.DateTimeFormat
对象所需的参数包括:语言环境代码、日期和时间格式模板。
const dateFormatter = new Intl.DateTimeFormat('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });
console.log(dateFormatter.format(new Date('2019-01-01T00:00:00'))); // "Tuesday, January 1, 2019"
Intl.DateTimeFormat
对象可以通过 Intl.DateTimeFormat()
方法的第二个参数来满足更多的需求,包括设置时区、小时制、格式化类型等。
const dateFormatter = new Intl.DateTimeFormat('en-US', {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric',
timeZone: 'America/Los_Angeles',
hour: 'numeric',
minute: 'numeric',
hour12: true
});
console.log(dateFormatter.format(new Date('2019-01-01T00:00:00'))); // "Monday, December 31, 2018, 4:00:00 PM"
Date.parse()
方法用于将日期字符串转换为日期对象,支持多种日期格式。ES6 引入了一个新的规范,使其对日期字符串的解析更加精确。
const date = new Date(Date.parse('2019-01-01T00:00:00.000Z'));
console.log(date.toISOString()); // "2019-01-01T00:00:00.000Z"
在 ES6 中,日期和时间 API 得到了大幅升级和增强,功能更加丰富、易用。包括新增了几个方法如 Date.now()
、Date.prototype.toLocaleDateString()
、Date.prototype.toLocaleString()
、Date.prototype.toISOString()
;新增了 Intl.DateTimeFormat
对象;以及对 Date.parse()
方法进行了优化。这些新的 API 有助于开发者更加便捷地处理和格式化日期和时间。