您的位置:

npmdayjs:让 JavaScript 时间处理更简单

npm dayjs 是一个轻量级的 JavaScript 库,它专注于时间处理,能够让开发者在处理时间的过程中更加方便快捷。

一、简介

在日常的开发中,我们经常需要对时间进行各种处理,例如格式化输出、计算时间之间的差值、获取当前时间等等。然而,JavaScript 的原生 Date 对象提供的方法比较有限,而且很难处理常见的时间格式。因此,社区中涌现了很多针对时间处理的库,而 Day.js 就是其中的一员。

Day.js 是一个轻量级的 JavaScript 时间库,它支持链式操作、自定义插件和 I18n。它采用了和 Moment.js 相似的 API 设计,但是 Day.js 仅有 2KB 左右的大小,是后者的 1/20 左右。

二、安装和使用 Day.js

Day.js 通过 npm 安装:

npm install dayjs

然后我们就可以在项目中使用 Day.js 了:

import dayjs from 'dayjs'

// 获取当前时间
const now = dayjs()

// 格式化输出
const formatted = now.format('YYYY-MM-DD HH:mm:ss')

console.log(formatted) // 2022-02-22 12:34:56

Day.js 的 API 设计非常友好,例如获取当前时间:

const now = dayjs()

now.year() // 获取当前年份
now.month() // 获取当前月份(从 0 开始)
now.date() // 获取当前月份的第几天
now.hour() // 获取当前小时
now.minute() // 获取当前分钟数
now.second() // 获取当前秒数
now.millisecond() // 获取当前毫秒数

三、格式化时间输出

Day.js 的最常用功能就是格式化时间输出了。通过 format 函数可以将时间按照指定的格式输出。

// 创建一个时间
const time = dayjs('2022-02-22T12:34:56')

// 格式化输出
const formatted = time.format('YYYY年MM月DD日 HH:mm:ss')

console.log(formatted) // 2022年02月22日 12:34:56

Day.js 支持的格式化参数非常丰富,包括:

  • YY:年份(后两位)
  • YYYY:年份(四位)
  • M:月份(不补 0)
  • MM:月份(补 0)
  • D:日期(不补 0)
  • DD:日期(补 0)
  • H:小时(24 小时制、不补 0)
  • HH:小时(24 小时制、补 0)
  • h:小时(12 小时制、不补 0)
  • hh:小时(12 小时制、补 0)
  • m:分钟(不补 0)
  • mm:分钟(补 0)
  • s:秒钟(不补 0)
  • ss:秒钟(补 0)
  • SSS:毫秒
  • A:上午或下午(大写)
  • a:上午或下午(小写)
  • dddd:星期几(完整的名称)
  • ddd:星期几(缩写)

四、计算时间差值

Day.js 还支持计算时间之间的差值,并且可以按照一定的精度(如年、月、日、小时、分钟等)进行输出。

// 创建两个时间
const start = dayjs('2022-02-22T12:34:56')
const end = dayjs('2022-02-23T14:56:23')

// 计算差值
const diff = end.diff(start, 'hour')

console.log(diff) // 26

在上面的代码中,我们通过 diff 函数计算 start 和 end 之间的差值,并且指定了输出单位为小时。

五、自定义插件

Day.js 支持自定义插件,通过自定义插件可以扩展 Day.js 的功能。

例如,我们可以通过一个自定义插件来获取当前日期的 zodiac(属相):

// 定义一个插件
dayjs.extend({
    zodiac: function () {
        const year = this.year()
        const startYear = 1900 // 起始年份
        const zodiacs = ['鼠', '牛', '虎', '兔', '龙', '蛇', '马', '羊', '猴', '鸡', '狗', '猪']
        // 通过算法计算属相
        return zodiacs[(year - startYear) % 12]
    }
})

// 使用自定义插件
const now = dayjs()

console.log(now.zodiac()) // 狗

六、I18n

Day.js 支持多语言环境,内置了 13 种常见的语言环境,并且可以自定义语言环境。

例如,我们可以切换语言环境,并且使用自定义的语言环境:

// 切换语言环境
dayjs.locale('zh-cn')

// 自定义语言环境
dayjs.locale({
    name: 'mylang',
    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
    weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
    monthsShort: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_')
})

const now = dayjs()

console.log(now.format('YYYY年MM月DD日 dddd', { locale: 'mylang' })) // 2022年02月22日 周二

七、总结

npm dayjs 是一个功能完善、易用性高、轻量级的 JavaScript 时间处理库。它支持格式化输出、计算时间差值、自定义插件和 I18n,能够让开发者在处理时间的过程中更加方便快捷。同时,Day.js 的大小只有约 2KB 左右,是其他类似时间处理库大小的 1/20 左右,非常适合在前端项目中使用。