📜  ES6 |日期(1)

📅  最后修改于: 2023-12-03 15:30:38.289000             🧑  作者: Mango

ES6日期

JavaScript 有很多日期和时间相关的内置函数和对象。但在 ES6 中,有一些新的日期 API 被添加了进来。这些 API 包括更方便的处理日期和时间的方法、更方便的操作和格式化方法、以及更简洁的时区和日期解析方法。本文将会介绍几个 ES6 关于日期操作的新功能。

Date 对象

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,其中 TZ 是固定的分隔符和时区标识符,在 ISO 8601 标准中规定。

const date = new Date('2019-01-01T00:00:00.000Z');
console.log(date.toISOString()); // "2019-01-01T00:00:00.000Z"
Intl.DateTimeFormat

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

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 有助于开发者更加便捷地处理和格式化日期和时间。