npm install moment
<script src="https://cdn.jsdelivr.net/npm/moment@2.29.1/moment.min.js"></script>
const moment = require('moment');
let now = moment();
console.log(now.format());
let specificDate = moment('2024-06-15');
console.log(specificDate.format());
let dateTime = moment('2024-06-15T13:45:00');
console.log(dateTime.format('YYYY-MM-DD HH:mm:ss'));
Moment.js 提供了灵活的日期格式化功能。
let now = moment();
// 默认格式
console.log(now.format()); // "2024-06-15T13:45:00+00:00"
// 自定义格式
console.log(now.format('YYYY-MM-DD HH:mm:ss')); // "2024-06-15 13:45:00"
// 更多格式化示例
console.log(now.format('dddd, MMMM Do YYYY, h:mm:ss a')); // "Saturday, June 15th 2024, 1:45:00 pm"
console.log(now.format('ddd, hA')); // "Sat, 1PM"
Moment.js 能够解析多种日期格式。
let dateString = '2024-06-15';
let date = moment(dateString, 'YYYY-MM-DD');
console.log(date.format('MMMM Do YYYY')); // "June 15th 2024"
let date1 = moment('15-06-2024', ['DD-MM-YYYY', 'YYYY-MM-DD']);
console.log(date1.format('YYYY-MM-DD')); // "2024-06-15"
let date2 = moment('20240615', 'YYYYMMDD');
console.log(date2.format('YYYY-MM-DD')); // "2024-06-15"
Moment.js 提供了多种方法来操作日期和时间。
let now = moment();
let future = now.add(7, 'days');
console.log(future.format('YYYY-MM-DD')); // 当前日期 + 7 天
let past = now.subtract(1, 'month');
console.log(past.format('YYYY-MM-DD')); // 当前日期 - 1 个月
let complexOperation = now.add(3, 'years').subtract(2, 'months').add(10, 'days');
console.log(complexOperation.format('YYYY-MM-DD')); // 当前日期 + 3 年 - 2 个月 + 10 天
相对时间显示是 Moment.js 的一大特色。
let pastDate = moment('2024-01-01');
console.log(pastDate.fromNow()); // "5 months ago"
let futureDate = moment('2025-01-01');
console.log(futureDate.toNow()); // "in 7 months"
let customPastDate = moment('2024-01-01');
console.log(customPastDate.fromNow(true)); // "5 months"
let customFutureDate = moment('2025-01-01');
console.log(customFutureDate.toNow(true)); // "7 months"
Moment.js 可以用于验证日期是否合法。
let isValid = moment('2024-13-01', 'YYYY-MM-DD', true).isValid();
console.log(isValid); // false
isValid = moment('2024-12-01', 'YYYY-MM-DD', true).isValid();
console.log(isValid); // true
Moment.js 提供了简单的方法来获取和设置日期的各个部分。
let now = moment();
console.log(now.year()); // 获取年份
console.log(now.month()); // 获取月份(0-11)
console.log(now.date()); // 获取日期
console.log(now.hour()); // 获取小时
console.log(now.minute()); // 获取分钟
console.log(now.second()); // 获取秒
now.year(2025);
now.month(0); // 一月
now.date(1);
now.hour(0);
now.minute(0);
now.second(0);
console.log(now.format('YYYY-MM-DD HH:mm:ss')); // "2025-01-01 00:00:00"
时区处理需要 moment-timezone 插件。
npm install moment-timezone
const moment = require('moment-timezone');
let now = moment.tz('America/New_York');
console.log(now.format('YYYY-MM-DD HH:mm:ss')); // "2024-06-15 09:45:00"
let londonTime = now.tz('Europe/London');
console.log(londonTime.format('YYYY-MM-DD HH:mm:ss')); // "2024-06-15 14:45:00"
Moment.js 可以轻松计算两个日期之间的差异。
let start = moment('2024-01-01');
let end = moment('2024-12-31');
let diffDays = end.diff(start, 'days');
console.log(diffDays); // 364
let diffMonths = end.diff(start, 'months');
console.log(diffMonths); // 11
let diffYears = end.diff(start, 'years');
console.log(diffYears); // 0
Moment.js 支持链式调用,使得日期操作更为简洁。
let result = moment().add(10, 'days').subtract(2, 'months').startOf('day');
console.log(result.format('YYYY-MM-DD HH:mm:ss'));
Moment.js 提供了许多插件来扩展其功能:
npm install moment-range moment-duration-format
const { extendMoment } = require('moment-range');
const moment = extendMoment(require('moment'));
let start = moment('2024-01-01');
let end = moment('2024-12-31');
let range = moment.range(start, end);
console.log(range.contains(moment('2024-06-15'))); // true
const moment = require('moment');
require('moment-duration-format');
let duration = moment.duration(123, 'minutes');
console.log(duration.format('h:mm')); // "2:03"