Day.js 使用简介:轻量级的 JavaScript 日期库

2025-01-26 08:30:12

在现代 Web 开发中,处理日期和时间是常见的需求。传统的 JavaScript 日期对象虽然可以完成一些基本操作,但代码往往冗长且难以维护。为了解决这些问题,Day.js 应运而生。Day.js 是一个轻量级的 JavaScript 日期处理库,它提供了简洁的 API 和丰富的功能,极大地简化了日期操作。本文将详细介绍 Day.js 的使用方法,帮助您快速上手并熟练掌握这一工具。

Day.js Logo

一、Day.js 简介

1.1 什么是 Day.js?

Day.js 是一个轻量级的 JavaScript 日期处理库,旨在替代 Moment.js。它提供了类似 Moment.js 的 API,但体积更小,性能更高。Day.js 支持多种常见的日期操作,如格式化、解析、计算等,并且可以通过插件扩展功能。

1.2 Day.js 的特点

  • 轻量级:Day.js 的核心库仅有 2KB(gzip 后),不会显著增加项目的体积。
  • 易用性:提供了简洁直观的 API,易于学习和使用。
  • 兼容性:支持所有主流浏览器和 Node.js 环境。
  • 插件系统:通过插件可以扩展更多功能,如时区处理、相对时间等。
  • 社区支持:作为一个活跃的开源项目,拥有丰富的文档和教程。

二、安装与配置

2.1 安装 Day.js

要开始使用 Day.js,首先需要将其安装到您的项目中。对于 npm 项目,可以在终端中执行以下命令:

npm install dayjs

对于 Yarn 项目,可以使用以下命令:

yarn add dayjs

此外,您还可以通过 CDN 引入 Day.js:

<script src="https://unpkg.com/dayjs"></script>

2.2 引入 Day.js

安装完成后,可以通过以下方式引入 Day.js:

// ES6 模块导入
import dayjs from 'dayjs';

// CommonJS 模块导入
const dayjs = require('dayjs');

// 全局变量
console.log(dayjs().format());

如果您需要使用插件,可以在引入 Day.js 后再引入相应的插件:

import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';

dayjs.extend(relativeTime);

三、日期格式化

3.1 基本格式化

Day.js 提供了强大的日期格式化功能,可以通过 format 方法将日期对象转换为指定格式的字符串。以下是几种常见的格式化示例:

// 获取当前日期并格式化
const currentDate = dayjs().format('YYYY-MM-DD');
console.log(currentDate); // 输出:2023-10-05

// 自定义格式
const customFormat = dayjs().format('dddd, MMMM D, YYYY');
console.log(customFormat); // 输出:Thursday, October 5, 2023

3.2 相对时间

通过 fromNow 方法,可以将日期转换为相对时间(如“几分钟前”、“几天后”等)。这在显示动态内容时非常有用。

const pastDate = dayjs('2023-09-01');
console.log(pastDate.fromNow()); // 输出:about a month ago

const futureDate = dayjs('2023-11-01');
console.log(futureDate.fromNow()); // 输出:in about a month

3.3 ISO 格式

Day.js 还支持 ISO 8601 标准格式,可以通过 toISOString 方法将日期对象转换为 ISO 格式的字符串。

const isoDate = dayjs().toISOString();
console.log(isoDate); // 输出:2023-10-05T14:48:32.123Z

四、日期计算

4.1 加减日期

Day.js 提供了 addsubtract 方法,用于对日期进行加减操作。您可以指定要加减的时间单位(如年、月、日、小时等)。

// 添加7天
const dateAfter7Days = dayjs().add(7, 'day');
console.log(dateAfter7Days.format('YYYY-MM-DD')); // 输出:2023-10-12

// 减去3个月
const dateBefore3Months = dayjs().subtract(3, 'month');
console.log(dateBefore3Months.format('YYYY-MM-DD')); // 输出:2023-07-05

4.2 比较日期

通过 isBeforeisAfterisSame 方法,可以比较两个日期之间的关系。

const today = dayjs();
const tomorrow = dayjs().add(1, 'day');

console.log(today.isBefore(tomorrow)); // 输出:true
console.log(today.isAfter(tomorrow)); // 输出:false
console.log(today.isSame(tomorrow, 'day')); // 输出:false

4.3 设置日期

通过 set 方法,可以修改日期对象中的特定部分(如年、月、日、小时等)。

const modifiedDate = dayjs().set('year', 2024).set('month', 11).set('date', 25);
console.log(modifiedDate.format('YYYY-MM-DD')); // 输出:2024-12-25

五、日期解析

5.1 解析字符串

Day.js 可以轻松地将字符串解析为日期对象。默认情况下,它会根据 ISO 8601 标准进行解析,也可以通过 parse 方法指定自定义格式。

// 解析 ISO 格式的日期字符串
const parsedDate = dayjs('2023-10-05T14:48:32.123Z');
console.log(parsedDate.format()); // 输出:2023-10-05T14:48:32+00:00

// 解析自定义格式的日期字符串
const customParsedDate = dayjs('2023/10/05', 'YYYY/MM/DD');
console.log(customParsedDate.format()); // 输出:2023-10-05T00:00:00+00:00

5.2 解析 Unix 时间戳

除了字符串,Day.js 还可以直接解析 Unix 时间戳(以毫秒为单位)。

const unixTimestamp = 1696502912123;
const parsedUnixDate = dayjs(unixTimestamp);
console.log(parsedUnixDate.format()); // 输出:2023-10-05T14:48:32+00:00

六、总结

综上所述,Day.js 是一款功能强大且易于使用的 JavaScript 日期处理库。它不仅体积小巧,性能优越,还提供了简洁直观的 API 和丰富的功能,能够满足各种日期操作的需求。通过引入 Day.js,您可以更高效地处理日期和时间,确保应用程序的质量和性能。

iamkun
Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样,是Moment.js 的 2kB 轻量化方案。
JavaScript
MIT
47.5 k