JavaScript 日期格式——如何在 JS 中格式化日期
JavaScript 是你在开发网站或 Web 应用程序时将使用的三种基本 Web 技术之一。
在创建网页时,在某些时候,你可能会出于某种原因需要使用日期——例如显示某些内容的上传、存储时间等。
在本文中,你将学习如何在 JavaScript 中设置日期格式,并了解如何使用流行的 JavaScript 日期库 moment.js 来执行此操作。
如何在 JavaScript 中获取日期
在 JavaScript 中,你可以使用 new Date()
或 Date()
构造函数来获取日期(当前日期或特定日期)。
new Date()
构造函数返回一个新的 Date
对象,而 Date()
构造函数返回当前日期和时间的字符串形式。
let stringDate = Date();
console.log(stringDate); // "Tue Aug 23 2022 14:47:12 GMT-0700 (Pacific Daylight Time)"
let objectDate = new Date();
console.log(objectDate); // Tue Aug 23 2022 14:47:12 GMT-0700 (Pacific Daylight Time)
这些完整格式的日期包括日、月、年、分钟、小时等等。
你主要关心的是查看如何格式化这些日期值以返回可读格式的日期,你可以将其嵌入到你的网页中以供所有人理解。
如何在 JavaScript 中格式化日期
格式化日期取决于你的需求。在某些国家/地区,月份在日期之前,然后是年份 (06/22/2022);而在有的地区,日期在月份之前,然后是年份(22/06/2022)……
无论格式如何,你都希望分解日期对象值并获取你想要的网页所需信息。
这可以通过 JavaScript 日期方法实现。这些方法有很多,但由于你只关心本文中的日期,因此你只需要其中三个:
getFullYear()
– 你将使用此方法以四位数字(yyyy)形式获取年份。例如,2022 年。getMonth()
– 你将使用此方法将月份作为 0-11 之间的数字获取,每个数字代表从一月到十二月的月份。例如,2
将是 March 的索引,因为它是从零开始的索引(意味着它从0
开始)。getDate()
– 你将使用此方法以 1-31 之间的数字形式获取日期(这不是索引,而是确切的日期值,因此它从 1 开始,而不是 0)。
注意: 这些方法只能与 new Date()
构造函数一起使用,该构造函数返回一个日期对象。
let objectDate = new Date();
let day = objectDate.getDate();
console.log(day); // 23
let month = objectDate.getMonth();
console.log(month + 1); // 8
let year = objectDate.getFullYear();
console.log(year); // 2022
你会注意到上面的 month
值添加了 1
。这是因为月份是 0
索引的,该值从 0
开始。这意味着八月的索引是 7
,而不是 8
。
此时,你已经能够从日期对象中提取所有日期值。你现在可以以你想要的任何格式组织它们:
let format1 = month + "/" + day + "/" + year;
console.log(format1); // 7/23/2022
let format2 = day + "/" + month + "/" + year;
console.log(format2); // 23/7/2022
let format3 = month + "-" + day + "-" + year;
console.log(format3); // 7-23-2022
let format4 = day + "-" + month + "-" + year;
console.log(format4); // 23-7-2022
在上面,你使用加号运算符连接了这些值。你还可以使用模板字面量来连接它们:
let format1 = `${month}/${day}/${year}`;
console.log(format1); // 7/23/2022
let format2 = `${day}/${month}/${year}`;
console.log(format2); // 23/7/2022
let format3 = `${month}-${day}-${year}`;
console.log(format3); // 7-23-2022
let format4 = `${day}-${month}-${year}`;
console.log(format4); // 23-7-2022
现在,你已经看到了格式化日期的可能方式。
另一种情况可能是,如果月份和日期值是单个数值(从 1 到 9),你希望它的前面有 0。为此,你需要在格式化日期之前添加一个条件来处理此问题:
if (day < 10) {
day = '0' + day;
}
if (month < 10) {
month = `0${month}`;
}
let format1 = `${month}/${day}/${year}`;
console.log(format1); // 07/23/2022
对在 JavaScript 中格式化日期的其他方式感兴趣?请查看我的文章“如何用一行代码在 JavaScript 中格式化日期”。
如何使用 Moment.js 在 JavaScript 中格式化日期
Moment.js 是一个 JavaScript 日期和时间库,你可以使用它来快速格式化你的日期,而无需处理太多行代码的逻辑。
要使用此库,你必须使用文档中的任何首选选项将包安装到你的项目中。
对于本指南,你只关心如何使用 Moment.js 格式化日期:
let date = moment().format();
console.log(date); // 2022-08-23T16:50:22-07:00
要格式化此日期/时间值,你所要做的就是输入你喜欢的格式,它将返回格式化的日期,如下所示:
let dateFormat1 = moment().format('D-MM-YYYY');
console.log(dateFormat1); // 23-08-2022
let dateFormat2 = moment().format('D/MM/YYYY');
console.log(dateFormat2); // 23/08/2022
let dateFormat3 = moment().format('MM-D-YYYY');
console.log(dateFormat3); // 08-23-2022
let dateFormat4 = moment().format('MM/D/YYYY');
console.log(dateFormat4); // 08/23/2022
小结
本文介绍了如何从头开始或使用 moment.js 库在 JavaScript 中格式化日期。
将库用于小型项目时要注意,因为库会增加项目的大小。这是因为这些库旨在处理更多操作。但是要使用任何最小的操作,你仍然必须安装整个库。
我建议你从头开始执行这样的简单操作——也就是说,除非你被迫使用该库,或者该库已安装,或者你正在处理需要一些复杂格式的大型项目。