Day.js 核心功能与 API 使用指南
Day.js 是一款极简且高效的 JavaScript 日期处理库,压缩后仅约 2 KB。本文详细介绍其安装方式、核心 API 及常用功能,包括日期解析、格式化输出、时区处理、国际化支持以及日期间的加减与比较操作,并提供 Unix 时间戳与 ISO 8601 格式转换示例,帮助开发者快速掌握并应用于 Web 或 Node.js 项目。
标题存在部分重复,敬请谅解。
优势分析:
易于上手:Day.js 的 API 设计简洁直观,学习成本低。它提供了丰富的日期操作接口和格式化选项,让日期与时间的处理既灵活又便捷。
体积小巧:压缩后的 Day.js 库大小仅约 2 KB,属于极轻量的日期处理方案。这有助于显著优化网页加载速度,尤其在移动端设备上表现更佳。
零依赖:作为独立的日期库,Day.js 不依赖任何第三方库。这简化了项目集成过程,无需担心与其他库的版本冲突或兼容性问题。
时区支持:内置时区处理能力,可轻松应对不同时区的日期时间转换。这对于开发国际化应用至关重要,能有效降低时区处理的复杂度。
插件生态:拥有完善的插件生态系统,可通过插件扩展功能,如日期范围选择、日历展示等,满足多样化项目需求。
局限性:
功能相对基础:相较于某些大型日期库,Day.js 的功能集较为精简。它可能不支持某些复杂的日期运算、比较或范围计算逻辑,处理复杂日期逻辑时可能需要额外编码。
社区规模较小:相比主流大型日期库,Day.js 的社区活跃度与支持资源相对较少。遇到问题时,获取即时且全面解决方案的难度可能略高。
格式化选项有限:虽然提供了常用时间格式化选项,但相比其他库,其格式化的灵活性稍显不足,可能限制某些特定格式化场景的需求。
下文将深入解析 Day.js 的具体用法,并附带代码示例及多种事件格式转换方法。
安装与基础使用
可通过 npm 或 yarn 命令进行安装:
# 使用 npm
$ npm install dayjs
# 使用 yarn
$ yarn add dayjs在代码中引入 Day.js:
import dayjs from 'dayjs';或者采用 CommonJS 方式:
const dayjs = require('dayjs');调用 dayjs() 函数即可创建 Day.js 实例,随后即可利用该实例执行各类日期操作。
const now = dayjs(); // 创建一个 Day.js 实例,表示当前时间
console.log(now.format('YYYY-MM-DD')); // 输出当前日期,格式为"YYYY-MM-DD"Day.js 提供了便捷的 API 用于日期操作,例如增减天数、小时或分钟等。
console.log(now.add(1, 'day').format('YYYY-MM-DD')); // 加一天
console.log(now.subtract(1, 'week').format('YYYY-MM-DD')); // 减一周
console.log(now.startOf('month').format('YYYY-MM-DD')); // 月初日期
console.log(now.endOf('month').format('YYYY-MM-DD')); // 月末日期Day.js 还支持对多个日期进行综合操作,例如计算两个日期之间的天数差:
const start = dayjs('2022-01-01');
const end = dayjs('2022-01-10');
console.log(end.diff(start, 'day')); // 输出10,表示两个日期之间的天数差解析日期:
const date = dayjs('2022-01-01');格式化日期:
const formattedDate = date.format('YYYY-MM-DD');获取当前日期:
const currentDate = dayjs();增加日期:
const newDate = date.add(1, 'day');减少日期:
const newDate = date.subtract(1, 'day');比较日期:
const isAfter = date1.isAfter(date2);
const isBefore = date1.isBefore(date2);
const isSame = date1.isSame(date2);获取日期之间的差异:
const diff = date1.diff(date2, 'day');获取日期的某个部分:
const year = date.year();
const month = date.month();
const day = date.date();
const hour = date.hour();
const minute = date.minute();
const second = date.second();设置日期的某个部分:
const newDate = date.year(2023).month(1).date(1);本地化显示日期:
import localizedFormat from 'dayjs/plugin/localizedFormat';
import 'dayjs/locale/zh-cn';
dayjs.extend(localizedFormat);
dayjs.locale('zh-cn');
const formattedDate = date.format('LL');格式化日期
Day.js 通过 format() 方法实现日期格式化,其字符串模板语法类似于 Moment.js,用于定义输出格式。
以下列举常用模板字符串:
- - YYYY:4 位年份,例如 2022
- - MMMM:月份全称,例如 January
- - MMM:月份缩写,例如 Jan
- - DD:2 位日期,例如 01
- - dddd:星期全称,例如 Sunday
- - ddd:星期缩写,例如 Sun
- - HH:24 小时制小时数,例如 08
- - hh:12 小时制小时数,例如 08
- - mm:分钟数,例如 01
- - ss:秒数,例如 01
console.log(now.format('YYYY-MM-DD')); // 输出当前日期,格式为"YYYY-MM-DD"
console.log(now.format('YYYY-MM-DD HH:mm:ss')); // 输出当前日期和时间,格式为"YYYY-MM-DD HH:mm:ss"
console.log(now.format('YYYY年M月D日 dddd')); // 输出当前日期,格式为"YYYY年M月D日 dddd"
// 格式化为相对时间(如:几秒前、几分钟前)
dayjs.duration(60, 'seconds').humanize(); // "a minute"
// 格式化为时:分:秒
dayjs.duration(3661, 'seconds').format('H:mm:ss'); // "1:01:01"
// 格式化为天
dayjs.duration(2, 'days').asDays(); // 2Day.js 还支持自定义格式化函数,可通过传入回调函数来自定义日期格式。
const customFormat = dayjs('2022-01-01').format(function () {
return 'Happy New Year!';
});
console.log(customFormat); // 输出"Happy New Year!"
// 转换为 Unix 时间戳
dayjs().unix();
// 转换为 JavaScript Date 对象
dayjs().toDate();
// 转换为 ISO 8601 格式的字符串
dayjs().toISOString();日期解析
Day.js 支持解析多种常见日期格式,涵盖 ISO 8601 标准及各类本地格式。
const date = dayjs('2022-01-01');
console.log(date.format('YYYY-MM-DD')); // 输出"2022-01-01"
// 转换为 Unix 时间戳
dayjs().unix();
// 转换为 JavaScript Date 对象
dayjs().toDate();
// 转换为 ISO 8601 格式的字符串
dayjs().toISOString();此外,Day.js 还支持解析 Unix 时间戳。
const unixTimestamp = 1640995200; // Unix 时间戳
const date = dayjs.unix(unixTimestamp);
console.log(date.format('YYYY-MM-DD')); // 输出"2022-01-01"国际化支持
Day.js 内置支持 66 种语言的国际化,便于在应用中切换不同语言。以下为常用国际化示例:
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn'; // 导入中文语言包
// 设置语言为中文
dayjs.locale('zh-cn');
// 格式化日期
dayjs().format('dddd'); // "星期六"日期比较
Day.js 提供了比较日期大小的相关方法。
const date1 = dayjs('2022-01-01');
const date2 = dayjs('2022-01-02');
console.log(date1.isBefore(date2)); // 输出 true,表示 date1 在 date2 之前
console.log(date1.isAfter(date2)); // 输出 false,表示 date1 在 date2 之后
console.log(date1.isSame(date2, 'day')); // 输出 false,表示 date1 和 date2 不是同一天日期格式化
Day.js 提供了格式化日期的方法,可将日期格式化为本地格式、UTC 格式或 ISO 8601 格式等。
将日期格式化为本地格式:
const date = dayjs('2022-01-01');
console.log(date.format('LL')); // 输出 January 1, 2022将日期格式化为 UTC 格式:
const date = dayjs('2022-01-01');
console.log(date.utc().format('YYYY-MM-DD HH:mm:ss')); // 输出 2022-01-01 00:00:00将日期格式化为 ISO 8601 格式:
const date = dayjs('2022-01-01');
console.log(date.toISOString()); // 输出 2022-01-01T00:00:00.000Z时间格式的转换
Day.js 提供了转换不同事件格式的方法,例如将日期转换为 Unix 时间戳或 JavaScript Date 对象等。
将日期转换为 Unix 时间戳:
const date = dayjs('2022-01-01');
console.log(date.unix()); // 输出 1640995200将日期转换为 JavaScript Date 对象:
const date = dayjs('2022-01-01');
console.log(date.toDate()); // 输出 Sat Jan 01 2022 00:00:00 GMT+0800 (China Standard Time)将日期转换为 Moment.js 对象:
const date = dayjs('2022-01-01');
console.log(date.toDate()); // 输出 Moment<2022-01-01T00:00:00+08:00>事件操作
Day.js 提供了操作日期的方法,包括增减天数、小时、分钟等。
加减天数:
const date = dayjs('2022-01-01');
console.log(date.add(1, 'day').format('YYYY-MM-DD')); // 输出 2022-01-02
console.log(date.subtract(1, 'day').format('YYYY-MM-DD')); // 输出 2021-12-31比较两个日期的差异:
const date1 = dayjs('2022-01-01');
const date2 = dayjs('2022-01-10');
console.log(date)总结:
Day.js 是一款轻量且易用的 JavaScript 日期库,具备强大的日期和时间处理能力。其 API 简洁,支持链式调用与不可变性。Day.js 支持国际化显示,并能解析和格式化各种日期时间格式。此外,它提供了丰富的插件系统,便于功能扩展。无论是 Web 开发还是 Node.js 环境,Day.js 均为理想选择。
本文关于 Day.js 常用方法的介绍到此结束,更多相关内容请查阅本站往期文章或继续浏览后续文章,感谢支持!
什么时候该用JS构造器:与工厂模式、字面量的选择对比
2026-11-05 16:18:22
推荐几款轻量级JS照片墙开源库及对比
2026-11-05 15:56:19
JavaScript递归写法有哪些常见陷阱及避免方法
2026-11-05 14:53:38
JS数组浅拷贝与深拷贝怎么选?场景与方法总结
2026-11-05 14:41:02
p5.js 中 setup() 和 draw() 函数的执行机制详解
2026-11-05 12:32:38
