Moment.js / Day.js 用于 JavaScript (Node.js):完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

这是什么库以及为什么需要它



Moment.js 和 Day.js 是两个用于 JavaScript 的强大库,专门用于处理日期和时间。它们解决了一个根本性问题:JavaScript 原生的 Date 对象在日常任务中极其不便。它不支持格式化、复杂的日期计算、解析不同格式的字符串以及处理时区,除非编写数十行代码。



Moment.js 长期以来一直是事实上的标准,但现在被视为“遗留项目”——其开发已冻结,由于体积庞大(约 300 KB),不建议用于新项目。取而代之的是 Day.js——一个轻量级(仅 2 KB)、快速的库,具有几乎相同的 API。Day.js 在大多数基本操作上与 Moment.js 完全兼容,便于迁移。



这两个库都提供:

  • 从任意格式的字符串解析日期
  • 将日期格式化为易读的字符串
  • 操作(添加/减去天数、月份、年份)
  • 日期比较(之前、之后、之间)
  • 时区处理(通过插件)
  • 本地化(支持不同语言和区域格式)


在本文中,我们将重点介绍 Day.js 作为现代替代方案,但所有示例也适用于 Moment.js,只需进行微小更改。



安装



对于 Node.js,通过 npm 或 yarn 进行安装。对于浏览器,可以使用 CDN。



安装 Day.js

# 通过 npmnpm install dayjs

# 通过 yarnyarn add dayjs


安装 Moment.js

npm install moment

# 或yarn add moment


在项目中引入

// Day.jsconst dayjs = require('dayjs');

// Moment.jsconst moment = require('moment');


快速入门及代码示例



安装后,您可以立即开始处理日期。以下是一个展示基本功能的最小示例:



const dayjs = require('dayjs');

// 当前日期和时间const now = dayjs();console.log('现在:', now.format('DD.MM.YYYY HH:mm:ss'));

// 解析字符串const date = dayjs('2024-03-15');console.log('解析:', date.format('DD.MM.YYYY'));

// 操作const nextWeek = dayjs().add(7, 'day');console.log('一周后:', nextWeek.format('DD.MM.YYYY'));

// 日期之间的差异const diff = nextWeek.diff(now, 'day');console.log('天数差异:', diff);

// 比较console.log('今天更早吗?', now.isBefore(nextWeek)); // true


主要方法/函数



1. dayjs() — 创建日期对象

功能: 创建一个表示特定时间点的 Day.js 对象。无参数时返回当前日期和时间。

参数:

  • date(可选)— 字符串、数字(时间戳)、Date 对象或其他 Day.js 对象
  • format(可选)— 用于解析的格式字符串,如果 date 是字符串

工作代码示例:

// 当前日期const now = dayjs();

// 从字符串const fromString = dayjs('2024-12-31');

// 从时间戳(毫秒)const fromTimestamp = dayjs(1704067200000);

// 从 Date 对象const fromDate = dayjs(new Date(2024, 0, 1)); // 2024年1月1日

// 指定格式const customFormat = dayjs('31.12.2024', 'DD.MM.YYYY');

console.log(now.format()); // 2024-03-15T10:30:00+03:00console.log(customFormat.format('YYYY-MM-DD')); // 2024-12-31


2. format() — 日期格式化

功能: 将日期对象转换为指定格式的字符串。

推荐