深入了解dayjs官网

Day.js是一个轻量级的 JavaScript 时间库,具有和 moment.js 一样的 API ,但却没有 1.5MB 大小的尺寸。 本文将以Day.js官网为中心,对Day.js的使用、特点、插件等方面进行详细阐述。

一、Day.js特点

Day.js拥有和moment.js一样的API,但同时Day.js在很多方面反而更加方便实用。比如,它一些很好用的API函数:

//获取当天的起始时间
dayjs().startOf('day');

//计算两个日期之间的天数
dayjs().diff(dayjs('2019-12-13'), 'day');

//获取某月的天数
dayjs().daysInMonth();

Day.js内置了一些默认格式和解析器的实现,比如:’YYYY-MM-DD’、’YYYY/MM/DD’,统一了各个API对日期格式的要求,解决了传参、转换和输出的问题。

Day.js支持链式语法,即一个Day.js实例调用完一个方法之后,返回的仍然是一个Day.js实例,方便链式调用。

Day.js的API扩展性也很强,可以对格式进行随意定制。

二、Day.js的使用与语法

引入Day.js库之后,创建一个dayjs实例,并在其中传入日期或时间字符:

const dayjs = require('dayjs');
dayjs("2019-12-13")

// OR
dayjs(new Date())

// OR
dayjs(1579715221832)

Day.js可以解析ISO8601,RFC2822和Unix Timestamp等格式:

dayjs('2019-01-01')                // 日期
dayjs().year(2019).month(0).date(1) // 日期
dayjs('2019')                      // 年份
dayjs('2019-001')                  // ISOWeek
dayjs('2019-W01-1')                // ISOWeek
dayjs('2019-05-06T03:04:05')       // 时间戳
dayjs('20190506')                  // 自定义

最后,Day.js还支持格式化输出,比如:

dayjs().format()                     // 默认格式(2022-02-14T20:30:54+08:00)
dayjs().format('YYYY-MM-DD')          // '2019-01-01'
dayjs().format('h:mm:ss A')           // '12:00:00 PM'(采用12小时制)
dayjs().format('[Today is] DDDo [day of the year]')   //'Today is 1st day of the year'

三、Day.js插件——duration & utc

Day.js还有一些像moment.js一样的插件。其中duration插件可以方便地计算两个时间之间的差值,如下所示:

// 获取两个时间相差的毫秒数
const oneHour = dayjs.duration(1, "hour").asMilliseconds();
const duration = dayjs('2022-02-14 21:30:00').diff(dayjs('2022-02-14 20:30:00'));   // 3600000

// 获取两个时间相差的具体时间(小时/分钟)
const diffHour = dayjs.duration(duration).asHours();  // 1
const diffMinute = dayjs.duration(duration).asMinutes(); // 60

而utc插件则可以方便地进行UTC时间与本地时间的转换,如下所示:

dayjs.utc('2019-01-01T00:00:00Z').local().format()   // UTC时间 -> 本地时间

四、Day.js插件——calendar & relativeTime

Day.js的calendar插件可以将日期转换成一些常用的表示形式,如下所示:

dayjs().calendar(null, {
  // 如果与当前时刻相差不超过3天以上,则显示在具体的星期几
  sameDay: '[Today]',
  nextDay: '[Tomorrow]',
  lastDay: '[Yesterday]',
  nextWeek: 'dddd',
  lastWeek: 'dddd',
  sameElse: 'YYYY/MM/DD'
});

而relativeTime插件也可将日期根据时间差值转换成一些表示形式,方便日常使用:

// 获取当前日期就是多久之前
dayjs().startOf('day').fromNow();    // 'a day ago'

// 获取未来某一日期与现在的时间相差多少
dayjs('2019-06-08').fromNow();      // '6 months ago'

// 获取未来某一日期到现在的时间差值
dayjs('2019-06-08').toNow();      // 'in 6 months'

五、Day.js插件——updateLocale

Day.js的locale插件可以对本地语言格式和解析进行扩展。例如下面的代码可以扩展中文支持,使得中国的用户可以更方便的使用Day.js:

// 扩展中文语言包
dayjs.locale('zh-cn', {
  weekdays: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
  monthsShort: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'],
});

这样,当我们使用dayjs.format(‘e’)的时候,输出的就是’周三’而不是默认的’Wed’。

六、Day.js插件——businessDay

Day.js的businessDay插件可以方便地获取下一个工作日/下一个周末。使用businessDay插件需要首先引入businessDay插件和businessTime插件(该插件用于指定一个起始时间点,它可以告诉我们当天的工作时间),具体的可以查看Day.js官网的文档。

const dayjs = require('dayjs');
const businessDay = require('dayjs/plugin/businessDay');
const businessTime = require('dayjs/plugin/businessTime');
dayjs.extend(businessDay);
dayjs.extend(businessTime);

// 找到下一个工作日
dayjs().nextBusinessDay();

// 找到下一个周末
dayjs().nextBusinessWeekend();

七、Day.js的优劣对比分析

Day.js和moment.js都是非常成熟的时间库,而Day.js又有着类似于moment.js的API,使用方法上二者并没有太大的不同。但经过对比之后,Day.js更加轻量化、易用性强,而且自带TypeScript支持,使得我们在编程过程中可以更多地专注于业务逻辑的构建和开发效率的提升。

八、总结

Day.js作为轻量级的 JavaScript 时间库,具有和moment.js一样的 API,但具有较小的尺寸,在实际应用中非常方便实用。Day.js在编写过程中的使用方法、特点和插件等方面可以满足不同开发者的需求。相信随着Day.js在前端开发中的更多应用,会为广大用户带来更多的便利。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-02 12:00
下一篇 2025-01-02 12:00

相关推荐

  • Python官网中文版:解决你的编程问题

    Python是一种高级编程语言,它可以用于Web开发、科学计算、人工智能等领域。Python官网中文版提供了全面的资源和教程,可以帮助你入门学习和进一步提高编程技能。 一、Pyth…

    编程 2025-04-29
  • 国家数字图书馆官网打不开怎么办?

    如果你发现无法访问国家数字图书馆官网,可能是以下几个方面导致的。 一、网络连接问题 首先,我们要确定自己的网络存在没有问题。可以通过浏览器访问其他网站来检测网络连接是否正常。 二、…

    编程 2025-04-29
  • Python中文版下载官网的完整指南

    Python是一种广泛使用的编程语言,具有简洁、易读易写等特点。Python中文版下载官网是Python学习和使用过程中的重要资源,本文将从多个方面对Python中文版下载官网进行…

    编程 2025-04-29
  • 尚硅谷官网地址用法介绍

    尚硅谷是国内一家领先的技术培训机构,提供了众多IT职业的培训,包括Java、Python、大数据、前端、人工智能等方向。其官网地址为http://www.atguigu.com/。…

    编程 2025-04-29
  • MLflow官网用法介绍

    本文将从多个方面详细阐述MLflow官网的功能和使用方法,让读者在学习和使用MLflow过程中更加便利。 一、介绍 MLflow是一个开源的机器学习平台,由Databricks团队…

    编程 2025-04-29
  • Python模块库大全官网

    Python模块库大全官网是一个全面收录Python模块库的网站,开发者可以在该网站中找到自己需要的模块库、文档、教程等资源,提高开发效率,降低开发成本。本文将从多个方面对Pyth…

    编程 2025-04-27
  • 老虎证券app官网下载

    老虎证券是一家提供在线股票交易服务的综合性经纪商。老虎证券app是老虎证券的官方移动应用,它可以为投资者提供包括股票、期货、外汇和数字货币的多种交易服务。本文将介绍老虎证券app的…

    编程 2025-04-27
  • 保利票务官网的开发实现

    保利票务官网是一个拥有强大性能和优秀用户体验的在线售票平台,其前端由 HTML、CSS 和 JavaScript 组成,后台使用 PHP 和 MySQL 进行数据存储和管理。本文将…

    编程 2025-04-27
  • OpenSwan 官网用法介绍

    OpenSwan 是一种开源 IPsec 协议,可以用于创建安全的虚拟专用网络。 一、OpenSwan 概述 OpenSwan 是一个成熟的、被广泛使用的开源项目。它支持 IPSE…

    编程 2025-04-27
  • 深入解析Vue3 defineExpose

    Vue 3在开发过程中引入了新的API `defineExpose`。在以前的版本中,我们经常使用 `$attrs` 和` $listeners` 实现父组件与子组件之间的通信,但…

    编程 2025-04-25

发表回复

登录后才能评论