Day.js 可以通过 npm 或 yarn 安装:
npm install dayjs
或
yarn add dayjs
Day.js 可以通过 CommonJS 或 ES6 模块的方式引入:
// CommonJS
const dayjs = require('dayjs');
// ES6
import dayjs from 'dayjs';
当前日期时间:
const now = dayjs();
console.log(now.toString());
指定日期时间:
const date = dayjs('2024-06-15');
console.log(date.toString());
默认格式化:
const now = dayjs();
console.log(now.format());
// => 2024-06-15T12:34:56+00:00 (示例)
自定义格式化:
const now = dayjs();
console.log(now.format('YYYY-MM-DD'));
// => 2024-06-15 (示例)
解析字符串日期:
const date = dayjs('2024-06-15');
console.log(date.toString());
const dateTime = dayjs('2024-06-15T12:34:56');
console.log(dateTime.toString());
添加时间:
const date = dayjs('2024-06-15');
const newDate = date.add(1, 'day');
console.log(newDate.format('YYYY-MM-DD'));
// => 2024-06-16
减去时间:
const date = dayjs('2024-06-15');
const newDate = date.subtract(1, 'month');
console.log(newDate.format('YYYY-MM-DD'));
// 2024-05-15
开始和结束时间:
const date = dayjs('2024-06-15');
console.log(date.startOf('month').format('YYYY-MM-DD'));
// => 2024-06-01
console.log(date.endOf('month').format('YYYY-MM-DD'));
// => 2024-06-30
是否相同:
const date1 = dayjs('2024-06-15');
const date2 = dayjs('2024-06-15');
console.log(date1.isSame(date2));
// true
是否在之前或之后:
const date1 = dayjs('2024-06-15');
const date2 = dayjs('2024-06-16');
console.log(date1.isBefore(date2));
// true
console.log(date1.isAfter(date2));
// false
Day.js 通过插件机制扩展功能,以下是一些常用插件及其用法:
相对时间:
import relativeTime from 'dayjs/plugin/relativeTime';
dayjs.extend(relativeTime);
console.log(dayjs().from(dayjs('2024-06-14'))); // '1 day ago'
console.log(dayjs().fromNow()); // 'a few seconds ago'
自定义解析格式:
import customParseFormat from 'dayjs/plugin/customParseFormat';
dayjs.extend(customParseFormat);
const date = dayjs('12-25-1995', 'MM-DD-YYYY');
console.log(date.format('YYYY-MM-DD')); // '1995-12-25'
时区支持:
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(utc);
dayjs.extend(timezone);
const date = dayjs().tz('America/New_York');
console.log(date.format()); //在纽约时区的当前日期时间
高级格式化:
import advancedFormat from 'dayjs/plugin/advancedFormat';
dayjs.extend(advancedFormat);
console.log(dayjs().format('Q Do k kk X x'));
//'2nd 15th 1 01 1623792000 1623792000000'
Day.js 支持多种语言,可以轻松切换语言设置:
import 'dayjs/locale/zh-cn';
dayjs.locale('zh-cn');
console.log(dayjs().format('dddd')); // '星期六'(示例)
通过 Day.js,开发人员可以高效地处理日期和时间,简化代码,提升性能。Day.js 是一个非常优秀的日期处理库,适合各种 JavaScript 开发需求。
Day.js: 体积:Day.js 非常轻量级,压缩后仅约 2KB。 性能:Day.js 的性能表现优秀,因为它采用了不可变对象和更高效的实现方式。
Moment.js: 体积:Moment.js 比较庞大,压缩后约 67KB。 性能:由于 Moment.js 是一个功能齐全的库,包含了大量功能,性能相对较差。
Day.js: API 兼容:Day.js 的 API 设计与 Moment.js 非常相似,使得从 Moment.js 迁移到 Day.js 非常简单。 不可变性:Day.js 的对象是不可变的,每次操作都会返回一个新的 Day.js 对象,避免了意外修改原对象的问题。
Moment.js: API 设计:Moment.js 的 API 功能强大且丰富,但其对象是可变的,容易导致副作用。
Day.js: 插件化:Day.js 提供了一个灵活的插件机制,可以按需加载插件扩展功能。 模块化:只需加载必要的插件,可以保持库的轻量和高效。
Moment.js: 内置功能:Moment.js 内置了大量功能,但不如 Day.js 的插件机制灵活。 插件:Moment.js 也有一些插件,但整体灵活性和按需加载的支持不如 Day.js。
Day.js: 时区支持:通过插件扩展支持时区处理(dayjs/plugin/timezone)。 国际化:Day.js 支持多语言,通过加载相应的语言包进行设置。
Moment.js: 时区支持:Moment.js 提供了单独的 Moment Timezone 库来处理时区问题。 国际化:Moment.js 内置了大量的语言支持,设置语言非常方便。
Day.js:
import dayjs from 'dayjs';
const now = dayjs();
const specificDate = dayjs('2024-06-15');
Moment.js:
import moment from 'moment';
const now = moment();
const specificDate = moment('2024-06-15');
Day.js:
const now = dayjs();
console.log(now.format('YYYY-MM-DD'));
Moment.js:
const now = moment();
console.log(now.format('YYYY-MM-DD'));
Day.js:
const date = dayjs('2024-06-15');
const newDate = date.add(1, 'day');
console.log(newDate.format('YYYY-MM-DD'));
Moment.js:
const date = moment('2024-06-15');
const newDate = date.add(1, 'day');
console.log(newDate.format('YYYY-MM-DD'));
Day.js:
const date1 = dayjs('2024-06-15');
const date2 = dayjs('2024-06-16');
console.log(date1.isBefore(date2)); # => true
Moment.js:
const date1 = moment('2024-06-15');
const date2 = moment('2024-06-16');
console.log(date1.isBefore(date2)); # => true