时间处理工具 dayjs使用示例详解

作者:昆吾kw 时间:2024-04-17 09:49:36 

特点

在 dayjs 之前,还有一个时间处理工具 moment.js,但是它的体积比较大,即使经过压缩压缩之后依然有 80kb 左右。而前者 dayjs 只有 2kb 大小,且具备一致的 API ,所以现在大都使用 dayjs。

  • 体积极小:核心包只有 2kb 大小,国际化需要加载对应的语言包,可通过插件扩展功能。

  • 简单易用:和 Moment.js 的 API 设计保持一致。

  • 不可变:所有的 API 操作都将返回一个新的 Dayjs 对象,避免 bug 产生,节约调试时间。

  • 国际化:对国际化支持良好,默认为英语环境。

安装和使用

在现代前端应用中,通过 node 包管理工具安装,比如:

pnpm add dayjs

dayjs 的基本架构

dayjs 包暴露了一个全局方法 dayjs,它是一个工厂函数,返回 Dayjs 对象的实例,大致结构如下:

function Dayjs () {
   // ...
}
function dayjs () {
   return new Dayjs()
}  

所以在使用 dayjs 时,每次调用 dayjs 方法,其实都是创建了一个 Dayjs 构造函数的实例。

基本用法

JavaScript 原生的 Date 日期对象没有提供处理格式化日期时间的方法,需要手动封装,可通过引入 dayjs 对日期格式进行处理。

Dayjs 原型对象上有一个 format 方法,用于格式化日期时间。它支持多种解析方法,比如时间戳,Date 对象实例和合法的日期字符串。

import dayjs from 'dayjs'
// 解析 Date 对象实例
dayjs(new Date()).format('YYYY-MM-HH') // 2022-10-24
// 解析 Unix 时间戳 (毫秒)
dayjs(1666617034000).format('YYYY/MM/DD hh:mm:ss') // 2022/10/24 21:10:34
// 解析 Unix 时间戳 (秒)
dayjs.unix(1666617034).format('YYYY-MM-DD') // 2022-10-24
// 解析符合 ISO 8601 格式的日期字符串
dayjs('2022-10-24T20:00:00.000Z').format('YYYY-MM-HH hh:mm:ss') // 2022-10-25 04:00:00

国际化

dayjs 默认语言是英语,只用来展示时间时没有问题。如果要做一些其他的处理,比如计算相对时间,此时需要手动导入中文语言包,来把一些描述性文字转为中文显示。

安装 dayjs 时,会把语言包一并安装下,位于 dayjs/locale 目录下。

import dayjs from 'dayjs'
import zhCn from 'dayjs/locale/zh-cn'
dayjs.locale(zhCn)

使用插件

在一些场景下,需要显示一条数据创建的相对时间,而非绝对时间,比如朋友圈里的分享,论坛里的帖子等等。此时可以导入一个插件来实现这个功能。

import dayjs from 'dayjs'
import relativeTime from 'dayjs/plugin/relativeTime'
dayjs.extend(relativeTime)
// 距离现在的相对时间
console.log(dayjs().toNow()) // 几秒前
// 某一个日期距离现在的相对时间
console.log(dayjs().to('2022-10-20')) // 5 天前

小结

本文简单介绍了 dayjs 的用法,主要用来格式化日期时间,和计算相对时间,以及国际化的处理。更多的介绍和用法可以阅读官方文档。

来源:https://juejin.cn/post/7158351423460081677

标签:时间处理,工具,dayjs
0
投稿

猜你喜欢

  • Python实现Mysql数据统计及numpy统计函数

    2024-01-18 13:15:07
  • 破解空间实现域名绑定到子目录方法

    2010-03-14 11:29:00
  • 将pymysql获取到的数据类型是tuple转化为pandas方式

    2024-01-26 11:26:18
  • Python函数实现学员管理系统

    2023-06-22 03:32:30
  • Python对象与引用的介绍

    2023-04-30 12:51:59
  • MySQL Slave 触发 oom-killer解决方法

    2024-01-20 14:44:35
  • 用JS开发页面动画效果时的一个设计思路

    2008-02-03 15:12:00
  • python密码错误三次锁定(实例讲解)

    2022-03-02 07:51:23
  • python爬虫实现爬取同一个网站的多页数据的实例讲解

    2021-04-11 13:52:09
  • yahoo 页面的标签效果

    2024-04-10 10:38:14
  • python实现播放音频和录音功能示例代码

    2023-08-20 23:23:15
  • python opencv读mp4视频的实例

    2022-04-13 00:32:11
  • 基于Express框架使用POST传递Form数据

    2024-06-05 09:52:26
  • Spring数据库连接池实现原理深入刨析

    2024-01-12 17:16:53
  • python人工智能tensorflow函数tf.nn.dropout使用方法

    2023-11-16 17:45:44
  • python简单的函数定义和用法实例

    2022-10-07 12:35:03
  • Python+Selenium实现短视频热点爬取

    2022-03-07 23:43:37
  • 原创一个AJAX类

    2008-07-24 13:29:00
  • vue中使用vue-qriously插件生成二维码

    2024-04-27 16:01:31
  • SQL Server 2000安全配置详解

    2024-01-20 05:54:37
  • asp之家 网络编程 m.aspxhome.com