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 左右,非常适合在前端项目中使用。

原创文章,作者:RXQLV,如若转载,请注明出处:https://www.506064.com/n/335063.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
RXQLVRXQLV
上一篇 2025-02-05 13:05
下一篇 2025-02-05 13:06

相关推荐

  • Python简单数学计算

    本文将从多个方面介绍Python的简单数学计算,包括基础运算符、函数、库以及实际应用场景。 一、基础运算符 Python提供了基础的算术运算符,包括加(+)、减(-)、乘(*)、除…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • Python海龟代码简单画图

    本文将介绍如何使用Python的海龟库进行简单画图,并提供相关示例代码。 一、基础用法 使用Python的海龟库,我们可以控制一个小海龟在窗口中移动,并利用它的“画笔”在窗口中绘制…

    编程 2025-04-29
  • 解决docker-compose 容器时间和服务器时间不同步问题

    docker-compose是一种工具,能够让您使用YAML文件来定义和运行多个容器。然而,有时候容器的时间与服务器时间不同步,导致一些不必要的错误和麻烦。以下是解决方法的详细介绍…

    编程 2025-04-29
  • 想把你和时间藏起来

    如果你觉得时间过得太快,每天都过得太匆忙,那么你是否曾经想过想把时间藏起来,慢慢享受每一个瞬间?在这篇文章中,我们将会从多个方面,详细地阐述如何想把你和时间藏起来。 一、一些时间管…

    编程 2025-04-28
  • Python樱花树代码简单

    本文将对Python樱花树代码进行详细的阐述和讲解,帮助读者更好地理解该代码的实现方法。 一、简介 樱花树是一种图形效果,它的实现方法比较简单。Python中可以通过turtle这…

    编程 2025-04-28
  • 计算斐波那契数列的时间复杂度解析

    斐波那契数列是一个数列,其中每个数都是前两个数的和,第一个数和第二个数都是1。斐波那契数列的前几项为:1,1,2,3,5,8,13,21,34,…。计算斐波那契数列常用…

    编程 2025-04-28
  • 时间戳秒级可以用int吗

    时间戳是指从某个固定的时间点开始计算的已经过去的时间。在计算机领域,时间戳通常使用秒级或毫秒级来表示。在实际使用中,我们经常会遇到需要将时间戳转换为整数类型的情况。那么,时间戳秒级…

    编程 2025-04-28
  • Python大神作品:让编程变得更加简单

    Python作为一种高级的解释性编程语言,一直被广泛地运用于各个领域,从Web开发、游戏开发到人工智能,Python都扮演着重要的角色。Python的代码简洁明了,易于阅读和维护,…

    编程 2025-04-28
  • 如何在ACM竞赛中优化开发时间

    ACM竞赛旨在提高程序员的算法能力和解决问题的实力,然而在比赛中优化开发时间同样至关重要。 一、规划赛前准备 1、提前熟悉比赛规则和题目类型,了解常见算法、数据结构和快速编写代码的…

    编程 2025-04-28

发表回复

登录后才能评论