基于Day.js更优雅的处理JavaScript中的日期

目录
  • 为什么使用day.js
    • Moment.js
    • Day.js
  • 没有day.js我们怎么办
  • Day.js 例子
    • 1. 获取两个日期相差的天数
    • 2. 检查日期是否合法
    • 3. 获取输入日期月份的天数
    • 4. 添加日、月、年、时、分、秒
    • 5. 减去日、月、年、时、分、秒
  • 使用插件来扩展功能
    • 1. RelativeTime
    • 2. WeekOfYear
    • 3. IsSameOrAfter
    • 4. MinMax
    • 5. IsBetween

今天我推荐给大家一个库 Day.js,它能够帮助我们处理JavaScript中的日期,因为JavaScript中的日期实在是太难用了。在做业务开发时完全无法使用,需要自己去封装各种函数。

为什么使用day.js

首先,使用day.js能够帮助我们更简单的处理JavaScript中的日期和时间。
在JavaScript中处理时间的库你可能听说很多,比如Moment,但都2021年了,其实是非常不推荐使用moment.js的,因为作为日期处理工具,它过于的笨重,day.js是更现代并且更轻量化,更加容易扩展的一个库。

Moment.js

点击这里查看体积大小

Day.js

点击这里查看体积大小

它非常轻量化,因为它可以利用TreeShaking,并且通过插件的方式来进行扩展,我们可以根据自己的需求去引入插件,所以我们最后只会引入我们需要的东西。

没有day.js我们怎么办

在原生的JavaScript中,我们要获取当前的日期要这样

const today = new Date();
const dd = String(today.getDate()).padStart(2, '0'); // 日
const mm = String(today.getMonth() + 1).padStart(2, '0'); // 月
const yyyy = today.getFullYear(); // 年
const curDate = `${yyyy}-${mm}-${dd}`

console.log(curDate)
// 输出: 2021-09-17

在day.js中我们只需这样,当然不止这样,还支持很多功能。
import dayjs from "dayjs";

const curDate = dayjs().format('YYYY-MM-DD');

console.log(curDate)
// 输出: 2021-09-17

Day.js 例子

现在我们来看一些实用、有趣的例子,与原生API相比,它更加简单,而且可读性更强。

1. 获取两个日期相差的天数

查看文档

import dayjs from "dayjs";

// 第二个参数指定为'day'代表以日为颗粒度
dayjs(new Date(2021, 10, 1)).diff(new Date(2021, 9, 17), "day");
// 输出: 15

2. 检查日期是否合法

查看文档

import dayjs from "dayjs";

dayjs("20").isValid();
// 输出:  false
dayjs("2021-09-17").isValid();
// 输出:  true

3. 获取输入日期月份的天数

查看文档

import dayjs from "dayjs";

dayjs("2021-09-13").daysInMonth()
// 输出: 30

4. 添加日、月、年、时、分、秒

查看文档

import dayjs from "dayjs";

dayjs("2021-09-17 08:10:00").add(20, "minute").format('YYYY-MM-DD HH:mm:ss')
// 输出: 2021-09-17 08:30:00

5. 减去日、月、年、时、分、秒

查看文档

import dayjs from "dayjs";

dayjs("2021-09-17 08:10:00").subtract(20, "minute").format('YYYY-MM-DD HH:mm:ss')
// 输出: 2021-09-17 07:50:00

使用插件来扩展功能

1. RelativeTime

查看文档

获取指定时间到现在的时间差。

import dayjs from "dayjs";
import relativeTime from "dayjs/plugin/relativeTime";

dayjs.extend(relativeTime);

dayjs("2021-09-16 13:28:55").fromNow();
// 输出: 9 hours ago

下面是所有的输出表

Range Key Sample Output
0 to 44 秒 s a few seconds ago
45 to 89 秒 m a minute ago
90 秒 to 44 分钟 mm 2 minutes ago ... 44 minutes ago
45 to 89 分钟 h an hour ago
90 分钟 to 21 小时 hh 2 hours ago ... 21 hours ago
22 to 35 小时 d a day ago
36 小时 to 25 天 dd 2 days ago ... 25 days ago
26 to 45 天 M a month ago
46 天 to 10 月 MM 2 months ago ... 10 months ago
11 月 to 17月 y a year ago
18 月+ yy 2 years ago ... 20 years ago

2. WeekOfYear

查看文档

获取指定日期是当年的第几周

import dayjs from "dayjs";
import weekOfYear from "dayjs/plugin/weekOfYear";

dayjs.extend(weekOfYear);

dayjs("2021-09-13 14:00:00").week();
// 输出: 38

3. IsSameOrAfter

查看文档

检查一个日期是否等于或者大于一个日期

import dayjs from "dayjs";
import isSameOrAfter from "dayjs/plugin/isSameOrAfter";

dayjs.extend(isSameOrAfter);

dayjs("2021-09-17").isSameOrAfter("2021-09-16");
// 输出: true

4. MinMax

查看文档

获取数组中最大的日期,或者最小的日期

import dayjs from "dayjs";
import minMax from "dayjs/plugin/minMax";

dayjs.extend(minMax)

const maxDate = dayjs.max([
    dayjs("2021-09-13"),
    dayjs("2021-09-16"),
    dayjs("2021-09-20")
])

const minDate = dayjs.min([
    dayjs("2021-09-13"),
    dayjs("2021-09-16"),
    dayjs("2021-09-20")
])

maxDate.format('YYYY-MM-DD HH:mm:ss')
// 输出: 2021-09-20 00:00:00
minDate.format('YYYY-MM-DD HH:mm:ss')
// 输出: 2021-09-13 00:00:00

5. IsBetween

查看文档

检查指定日期是否在指定的日期范围内

import dayjs from "dayjs";
import isBetween from "dayjs/plugin/isBetween";

dayjs.extend(isBetween);

// 使用日为颗粒度进行比较
dayjs("2010-10-21").isBetween(dayjs("2010-10-20"), dayjs("2010-10-25"), "day");
// 输出: true

// 使用年为颗粒度进行比较
dayjs("2010-10-21").isBetween(dayjs("2010-10-20"), dayjs("2010-10-25"), "year");
// 输出: false

到此这篇关于基于Day.js更优雅的处理JavaScript中的日期的文章就介绍到这了,更多相关Day.js处理日期内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Moment.js 不容错过的超棒Javascript日期处理类库

    使用这个类库,可以帮助你有效的处理相关日期.希望大家喜欢! 主要特性: 3.2kb超轻量级 独立类库,意味这你不需要倒入一堆js 日期处理支持UNIX 时间戳,String,指定格式的Date 日期处理:加,减日期 日期显示:包括相对时间显示的日期显示选项 其它内建的功能,例如,保存,timezone offset和i18n支持 可以作为node.js的一个模块 完整的文档介绍 如何使用? 复制代码 代码如下: var now = moment(); console.log(now.format

  • javascript显示上周、上个月日期的处理方法

    本文实例介绍了javascript一周前.一个月前的实现代码,对于javascript日期处理进行了简单分析,分享给大家供大家参考,具体内容如下 <html> <head> <title></title> <script src="../Script/jQuery/jquery-1.6.2.min.js" type="text/javascript"></script> <script s

  • 详解js中常规日期格式处理、月历渲染和倒计时函数

    前言 相信大家都知道日期格式处理在前端的日常任务中非常常见,但是为此引入monent.js这样的类库又会显得有点臃肿,毕竟我们一个特定的项目中,并不需要monent.js那么全的涵盖范围.另外,如果现在公司让你自己手写一个日历组件(月历.周历),日历组件中需要耦合我们的其他业务需求,如果有一个任务列表,当11月22号的待进行任务,我需要在日历上有一个绿色圆点,表示当天有待办事项. 下面介绍一些常规的函数,希望对大家有用. 月历效果图 函数目录 getFormatDateStr 获得指定日期格式的

  • 自己整理的一个javascript日期处理函数

    复制代码 代码如下: /* * 函数名称: DateUtil * 作 者: yithcn * 功能说明: 日期函数 * 使用说明: * 创建日期: 2010.10.14 */ var DateUtil = {}; DateUtil.base = 60 * 60 * 24 * 1000; DateUtil.Add = function(num, sDate) { num = num || 0; sDate = sDate || new Date(); var base = this.base *

  • 日期处理的js库(迷你版)--自建js库总结

    接口+继承+代码优化思想 先分享下我觉得一个很不错的js编程小技巧,达到很大的代码共用性! 因为很多js库会在原生的对象上进行直接原型扩展,但这是很不好的习惯,不仅加重了每个新实例对象的内存消耗,而且容易造成污染性误解(以为有这东西)!而这也是建js库一个准则:尽量少的原型扩展,特别是越根部的对象! js建库准则 js建库准则(Dean Edwards在开发base2时候的一些体会)翻译版:http://biaoge.me/2009/12/239 js建库学习好地方:http://ejohn.o

  • 5个最佳的Javascript日期处理类库分享

    在大家日常网站开发和web应用开发中,我们往往需要有效的调用Javascript处理日期和时间格式相关的函数,在Javascript中已经包含了部分最基本的内建处理方法.当然如果大家有时间的话,完全可以自己开发和编写需要的方法,但是有效的使用别人已经开发好的类库肯定是一个更好的处理方式,没有必要什么都原创吧,君子善假于物也.今天这里我们收集了5个最佳的日期处理函数类库,希望对于大家有帮助,如果你喜欢我们的文章,请大家给我们留言,谢谢! 1. XDate 这个类库是javascript本地日期对象

  • 浅谈JS日期(Date)处理函数

    获取日期 1.Date() --返回当日的日期和时间. 2.getDate() --从 Date 对象返回一个月中的某一天 (1 ~ 31). 3.getDay() --从 Date 对象返回一周中的某一天 (0 ~ 6). 4.getMonth() --从 Date 对象返回月份 (0 ~ 11). 5.getFullYear() --从 Date 对象以四位数字返回年份. 6.getYear() --请使用 getFullYear() 方法代替. 7.getHours() --返回 Date

  • javascript日期处理函数,性能优化批处理

    其实网上写javascript日期格式化的博文很多,大体都看了看,都还不错.唯一遗憾的是只顾着实现了功能,没对函数进行性能优化. 俗话说:不要重复造轮子.google上找了一个比较不错的日期格式化函数,来开始我的优化之旅吧! google上找的这个日期函数化函数,估计大家都很眼熟,以前我也一直在用.先看看优化后和优化前的效率对比吧! 1.优化之前的toDate函数(字符串转换成Date对象),重复执行1万次,耗时660毫秒 2.优化之前的dateFormat函数(Date对象格式化成字符串),重

  • 基于Day.js更优雅的处理JavaScript中的日期

    目录 为什么使用day.js Moment.js Day.js 没有day.js我们怎么办 Day.js 例子 1. 获取两个日期相差的天数 2. 检查日期是否合法 3. 获取输入日期月份的天数 4. 添加日.月.年.时.分.秒 5. 减去日.月.年.时.分.秒 使用插件来扩展功能 1. RelativeTime 2. WeekOfYear 3. IsSameOrAfter 4. MinMax 5. IsBetween 今天我推荐给大家一个库 Day.js,它能够帮助我们处理JavaScript

  • 基于aotu.js实现微信自动添加通讯录中的联系人功能

    什么是Auto.JS? Auto.JS是Android平台上的JavaScript自动化工具. 它的本质是可执行自己编写的简易Javascript脚本的,尤其可以在开启"无障碍模式"的情况下对其他App进行一些操作的一个Android App,便于进行自动化操作.学习成本非常低. Auto.JS已被黑产广泛使用,以至于作者关闭了官方下载通道. 官网:https://github.com/hyb1996/Auto.js 下面通过代码给大家介绍下基于aotu.js实现微信自动添加通讯录中的

  • 浅谈javascript中关于日期和时间的基础知识

    前面的话 在介绍Date对象之前,首先要先了解关于日期和时间的一些知识.比如,闰年.UTC等等.深入了解这些,有助于更好地理解javascript中的Date对象.本文将介绍javascript关于日期和时间的基础知识 标准时间一般而言的标准时间是指GMT和UTC,以前是GMT,现在是UTC GMT 格林尼治标准时间(GMT)是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线 理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空

  • JavaScript 中的日期和时间及表示标准介绍

    前言 本篇的介绍涵盖以下部分: 1. 时间标准指的是什么?UCT和GMT 的概念.关联和区别? 2. 时间表示标准有哪些? 3. JS 中时间的处理 日期时间标准 日期的标准就不多说了 -- 公元纪年 是为纪念犹太人耶稣(基督)的诞生.他诞生的那一年为公元1年,诞生之前的年份称为"公元前n年" 简单来说,时间的标准就是以什么时间为起点开始计时.对于年份来说,举例来说,如果不使用公元纪年法,估计全世界交流起来就困难重重了(新中国54年,估计很把很多老外整晕) 时间标准其实挺多的. 原子时

  • 如何在JavaScript中比较日期详解

    目录 前言 如何在 JavaScript 中与日期对象进行日期比较 如何使用 JavaScript 进行等式比较 如何执行特定日期比较 总结 前言 日期是开发人员在创建实际应用程序时最常用的数据类型之一. 但通常,开发人员会在这种数据类型上苦苦挣扎,最终使用像 Moment.js 这样的日期库来完成简单的任务,这些任务不值得安装整个包所带来的大包大小. 当我们想到 JavaScript 中的日期比较时,我们会想到使用 Date 对象 ( Date()),当然,它确实有效. date 对象允许我们

  • 浅谈JavaScript中Date(日期对象),Math对象

    Date对象 1.什么是Date对象? 日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 语法:var Udate=new Date(); 注:初始值为当前时间(当前电脑系统时间). 2.Date对象常用方法: 3.Date方法实例 复制代码 代码如下: var newTime=new Date();//获取当前时间             var millSecond=Date.now();//当前日期转换成的毫秒数             var fullYear=n

  • js更优雅的兼容

    问题种种做底层接口兼容,无非就是利用if,判断客户端支持哪个接口的问题.最著名的例子就是事件: 复制代码 代码如下: var addEvent = function(e, what, how) { if (e.addEventListener) e.addEventListener(what, how, false) else if (e.attachEvent) e.attachEvent('on' + what, how) } 这里考虑了给元素绑定事件时可能遇到的两种状况--标准的W3C D

  • 深入认识JavaScript中的函数

    概述 函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解.JavaScript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的.通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递.在继续讲述之前,先看一下函数的使用语法: function func1(-){-} var func2=function(-){-}; var func3=function func4(-){-}; var func5=new Functio

  • AJAX入门之深入理解JavaScript中的函数

    概述 函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解.JavaScript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的.通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递.在继续讲述之前,先看一下函数的使用语法: function func1(-){-}var func2=function(-){-};var func3=function func4(-){-};var func5=new Function()

  • 如何利用Promises编写更优雅的JavaScript代码

    你可能已经无意中听说过 Promises,很多人都在讨论它,使用它,但你不知道为什么它们如此特别.难道你不能使用回调么?有什么了特别的?在本文中,我们一起来看看 Promises 是什么以及如何使用它们写出更优雅的 JavaScript 代码. Promises 易于阅读 比如说我们想从 HipsterJesus 的API中抓取一些数据并将这些数据添加到我们的页面中.这些 API 的响应数据形式如下: { "text": "<p>Lorem ipsum...<

随机推荐