在 ECMAScript 2021 中,Date 对象作为处理日期和时间的重要工具继续得到了改进和增强。本文将深入探讨 Date 对象的新特性和用法,让我们一起开始吧!
基本用法
Date 对象是 JavaScript 中专门用于处理日期和时间的对象,它可以存储自 1970 年 1 月 1 日 00:00:00 UTC(协调世界时)起的毫秒数,并提供了许多方法和属性来进行日期和时间的处理。我们可以通过以下方式来创建一个 Date 对象:
const now = new Date(); // 获取当前时间 const customDate = new Date("2022-01-01 00:00:00"); // 根据时间字符串创建 Date 对象 const customDate2 = new Date(2022, 0, 1, 0, 0, 0, 0); // 根据参数创建 Date 对象
“根据时间字符串创建 Date 对象” 和 “根据参数创建 Date 对象” 可以用于设置自定义的日期和时间,其中参数的含义分别是:年、月、日、时、分、秒和毫秒。需要注意的是,月份的计数是从 0 开始的,1 表示二月。
新特性
Date.parse() 和 Date.UTC()
在 ECMAScript 2021 中,Date.parse() 和 Date.UTC() 方法也经过了改进,现在它们可以解析 ISO 8601 格式的时间字符串,例如:
console.log(Date.parse("2022-01-01T00:00:00.000Z")); // 1640995200000 console.log(Date.UTC(2022, 0, 1, 0, 0, 0, 0)); // 1640995200000
这里的 “T” 表示时间,后面的 “.000” 表示毫秒,后面的 “Z” 表示时区为标准时间。
年份
在 ECMAScript 2021 中,Date 对象的年份可以支持更大的范围,从 -271821 到 275760。这意味着我们可以正确处理历史上和未来的日期。
时区
Date 对象还支持更多的时区名称和缩写,例如:
const date = new Date("2022-01-01T00:00:00.000Z"); console.log(date.toString()); // "Sat Jan 01 2022 00:00:00 GMT+0000 (UTC)" console.log(date.toLocaleString("en-US", { timeZone: "America/New_York" })); // "Fri Dec 31 2021 19:00:00 GMT-0500 (Eastern Standard Time)"
这里的 “GMT+0000 (UTC)” 是默认时区,“America/New_York” 表示美国纽约时区。
实际用例
时间戳转时间字符串
我们可以使用 Date 对象的 toLocaleString() 方法将时间戳转换为时间字符串:
const timestamp = 1640995200000; const date = new Date(timestamp); const dateString = date.toLocaleString(); console.log(dateString); // "2022-1-1 08:00:00"
注意这里的时间字符串是根据当前系统时区生成的,如果你需要指定时区,可以参考上文中的示例。
比较时间大小
我们可以使用 Date 对象的 getTime() 方法获取到毫秒数,再使用基本的比较运算符进行比较:
const timestamp1 = 1640995200000; const timestamp2 = 1641002400000; const date1 = new Date(timestamp1); const date2 = new Date(timestamp2); console.log(date2.getTime() > date1.getTime()); // true
计算两个时间之间的差值
我们可以使用 Date 对象的静态方法 diff() 计算两个时间之间的差值。diff() 方法的参数分别是两个 Date 对象和计算差值的单位:
const date1 = new Date(2022, 0, 1, 0, 0, 0, 0); const date2 = new Date(2022, 0, 2, 0, 0, 0, 0); const diff = Date.diff(date1, date2, "hours"); console.log(diff); // 24
这里的单位可以是 “years”、“months”、“days”、“hours”、“minutes” 和 “seconds”。
总结
Date 对象在 ECMAScript 2021 中得到了诸多改进和增强,支持更广泛的年份和时区,可以更方便地处理日期和时间相关的问题。我们可以通过 toLocaleString() 方法将时间戳转换为时间字符串,使用 getTime() 方法比较时间大小,使用 diff() 方法计算两个时间之间的差值。希望本文对你能有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6474432b968c7c53b01a6a0c