moment是JavaScript的一个日期时间处理库,它具有简单、强大和易于使用的特点,可以方便地进行日期和时间的格式化、解析等操作。
可以通过npm来安装:npm install moment
在node项目中引入
const moment = require("moment");
也可以通过import的方式引入
import moment from "moment";
但是需要在package.json
文件中加上"type": "module"
,因为node默认是CommonJS
模块化规范。
这里再扩展一下CommonJS
模块范规范和Module
模块化规范。
CommonJS模块化规范
Node.js
是CommonJS
规范的主要实践者。Node应用由模块组成,采用CommonJS
模块规范。每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。
CommonJS
使用module.exports
、exports
导出,使用require
导入
Module模块化规范
ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,旨在成为浏览器和服务器通用的模块解决方案。其模块功能主要由两个命令构成:export
和import
。export
命令用于规定模块的对外接口,import
命令用于输入其他模块提供的功能。
ES Module
采用export
、export default
导出,使用import
关键字导入。
详细可看博客js模块化(ESModule与CommonJS)。
在常规的项目中我们往往使用import
的方式导入moment
模块。
可以使用moment()
函数创建一个包含当前时间的moment
对象,例如:
const now = moment(); // 输出的结果是一个moment对象
可以使用后面所讲的format()
方法实现输出任意格式的时间。
可以使用format()方法将日期转换为特定格式的字符串,例如:
const nowTime1 = moment().format("YYYY年MM月DD日 HH:mm:ss");
const nowTime2 = moment().format("YYYY-MM-DD HH:mm:ss");
const nowTime3 = moment().format("YYYY/MM/DD/HH/mm/ss");
console.log(nowTime1); // 2023年06月08日 21:10:31
console.log(nowTime2); // 2023-06-08 21:10:31
console.log(nowTime3); // 2023/06/08/21/10/31
在这个例子中,首先用moment()
函数创建一个moment对象获取当前时间,然后使用format()
方法将该对象转换成三种不同的格式字符串。
另外moment()
也可以接收时间戳、标准日期字符串、Date对象为参数。
// 传入时间戳
const time1 = moment(1686230760332);
console.log(time1.format("YYYY-MM-DD HH:mm:ss")); // 2023-06-08 21:26:00
// 传入标准日期字符串
const time2 = moment("2023-06-08 21:27:00");
console.log(time2.format("YYYY-MM-DD HH:mm:ss")); // 2023-06-08 21:27:00
// 传入Date对象
const time3 = moment(new Date());
console.log(time3.format("YYYY-MM-DD HH:mm:ss")); // 2023-06-08 21:28:51
const nowTime = moment()
console.log(nowTime.year()); // 2023
console.log(nowTime.month()); // 5 month+1 才表示当前月份
console.log(nowTime.date()); // 8
console.log(nowTime.hour()); // 21
console.log(nowTime.minute()); // 18
console.log(nowTime.second()); // 24
这和new Date()
类似。
const date = moment("2023-06-08");
console.log(date.add(1, "days").format("YYYY-MM-DD")); // 输出"2023-06-09"
console.log(date.subtract(2, "months").format("YYYY-MM-DD")); // 输出"2023-04-09"
在这个例子中,首先创建一个moment对象,表示初始日期。然后分别使用add()
和subtract()
方法对该日期进行加减操作。
此方法在项目中常用,可以省去计算时间戳的步骤。
const date1 = moment("2023-06-08");
const date2 = moment("2023-06-09");
console.log(date1.isBefore(date2)); // true
console.log(date1.isAfter(date2)); // false
console.log(date1.isSame(date2)); // false
// 是否同年同月
console.log(date1.isSame(date2, "month")); // true
// 是否同年同月同日
console.log(date1.isSame(date2, "day")); // false
这些只是moment.js库中的一部分常用方法,了解这些方法可以帮助更方便地进行日期处理。