JavaScript日期库之date-fn.js

date-fns:现代JavaScript日期实用程序库-开源 date-fns是一个现代JavaScript日期实用程序库,它提供了用于在浏览器和Node.js中操纵JavaScript日期的最全面的工具集。 它是完整而又简单的,因为API明确,只有一种解决问题的方法。 它高度可靠且一致,始终遵守时区和DST。 而且它也是模块化的,因此您不必因不必要的功能而使项目project肿。 date-fns支持TypeScript和Flow,并受到具有数十种语言环境的惊人社区的支持。 立即下载
AI摘要

本文介绍了date-fns.js库的安装与使用方法,通过多个示例演示如何进行日期格式转换、日期加减运算、日期比较及判断等功能,并对比了其与moment.js的区别。

前言

用官网的话来说,date-fn.js 就是一个现代 JavaScript 日期实用程序库,date-fns 为在浏览器和 Node.js 中操作 JavaScript 日期提供了最全面、但最简单和一致的工具集。那实际用起来是否像它说的那么神奇呢,下面就一起来看看吧。

在这里插入图片描述


安装

安装的话就非常简单了,你可以用 npm/cnpm,或者你还可以用 yarn安装。

npm install date-fns --save
cnpm install date-fns --save
yarn add date-fns

引入

需要注意的是,用到的方法都需要在 {}中引入,并且 date-fns 是不支持全局引入的。

import { format } from "date-fns"; // 根据需要引入方法

实例

date-fns 中有非常多的方法可以选择,话不多说,下面直接进入实战开发。

1. 日期格式转换字符串格式

let dateTime = new Date();
console.log(dateTime); // Tue Sep 20 2022 16:08:58 GMT+0800 (中国标准时间)
let currentTime = format(dateTime, "yyyy-MM-dd HH:mm:ss");
console.log(currentTime); // 2022-09-20 16:09:33

2. 字符串格式转换日期格式

let dateTime = "2022-09-20 16:09:33";
let currentTime = parseISO(dateTime);
console.log(currentTime); // Tue Sep 20 2022 16:09:33 GMT+0800 (中国标准时间)

3. 现有日期做加/减

方法描述
addYears加年
subYears减年
addMonths加月
subMonths减月
addWeeks加周
subWeeks减周
addDays加天
subDays减天
addHours加小时
subHours减小时
addMinutes加分钟
subMinutes减分钟

例:当前日期减一天

let dateTime = new Date("2022-09-20 16:09:33");
let currentTime = format(subDays(dateTime, 1), "yyyy-MM-dd HH:mm:ss");
console.log(currentTime); // 2022-09-19 16:09:33

4. 日期之间的比较

若 timeOne 大于 timeTwo ,返回 1;反之返回 -1,如果相等则返回 0

let timeOne = new Date("2022-09-20 16:09:33");
let timeTwo = new Date("2022-01-20 21:19:53");
let currentTime = compareAsc(timeOne, timeTwo);
console.log(currentTime); // 1

5. 日期之间的差值

方法描述
differenceInYears年
differenceInMonths月
differenceInWeeks周
differenceInDays日
differenceInHours时
differenceInMinutes分

例:相差多少年

let timeOne = new Date("2022");
let timeTwo = new Date("2015");
let currentTime = differenceInYears(timeOne, timeTwo);
console.log(currentTime); // 7

6. 判断日期是否为今/昨/明天

判断成立返回 true,反之返回 false

方法描述
isToday今天
isYesterday昨天
isTomorrow明天

例:判断是否为今天

let dateTime = new Date("2022-09-20");
const currentTime = isToday(dateTime);
console.log(currentTime); // true

7. 获取当天的开始/结束时间

方法描述
startOfDay开始时间
endOfDay结束时间

例:获取今天开始时间

let dateTime = new Date("2022-09-20 16:09:33");
let currentTime = format(startOfDay(dateTime), "yyyy-MM-dd HH:mm:ss");
console.log(currentTime); // 2022-09-20 00:00:00

8. 获取当月月份的第一天/最后一天

方法描述
startOfMonth当月第一天
endOfMonth当月最后一天

例:获取当月第一天

let dateTime = new Date("2022-09-20");
let currentTime = format(startOfMonth(dateTime), "yyyy-MM-dd");
console.log(currentTime); // 2022-09-01

9. 获取传入的日期是哪一年/月/周几/几号

方法描述
getYear哪一年
getMonth哪一个月 注意:因为是从0开始,所以最终的结果需要加1
getDay周几
getDate几号
getHours小时
getMinutes分钟

例:获取传入的日期是哪一年

// 获取传入的日期是星期几
let dateTime = new Date("2022-12-20");
let currentTime = getYear(dateTime);
console.log(currentTime); // 2022

10. 获取传入日期所在一年当中的第几周

let dateTime = new Date("2020-01-11");
let currentTime = getISOWeek(dateTime);
console.log(currentTime); // 2

11. 判断传入的日期是否相等

若返回 true,则是相等的,反之若为 false 则不相等

let timeOne = new Date("2020-12-31");
let timeTwo = new Date("2020-11-31");
let currentTime = isEqual(timeOne, timeTwo);
console.log(currentTime); // false

总结

其实 date-fns.js 文档中还有一些其它有趣的 api 操作,大家感兴趣的话可以去 官网查看。有关于网上 date-fns.js 和 moment.js 的对比也是层出不穷,其实我在使用两款插件的过程中觉得它们都互有不足,但又各有各的优势,比如 moment.js 体积比较大,而 date-fns.js 体积非常小;又或者 moment.js 支持全局引入,而 date-fns.js 却不支持,诸如此类的对比我就不多做赘述了,如果你对 moment.js 感兴趣的话,也可以参考博主的另一篇文章 vue基于momentJs应用各类时间场景。

中国传媒大学计算机考研初复试经验贴 中传的计算机专业考研的话主要分为两大学院:计网学院和国重,大部分专业在计网学院。 阅读详情

相关推荐

DC/DC开关电源EMC仿真红宝书

本红宝书系统性介绍开关电源EMC仿真方法,包括仿真原理、仿真思路、仿真工具以及仿真效率提升与仿测一致性的实战经验。从理论到仿真,从仿真到应用,真正帮你实现一文掌握开关电源EMC仿真!全文约14000字,适读人群:开关电源设计、电磁兼容EMC相关从业者,电磁相关专业研究生及CST仿真爱好者等。

电磁学社 2498

date-fns日期工具的使用方法

date-fns是一个非常好用的JS时间处理库,同时支持浏览器和NodeJS环境,而且使用方便,API全面,下面就为大家简单介绍一下使用方法 GitHub地址: date-fns:https://github.com/date-fns/date-fns 特点 API数量多,全面,健壮: 数量高达180+ 模块化: 使用的时候引入自己需要的API即可,轻便 不可变性和纯粹性: API都是纯函数 支持TS 支持国际化 安装 # 使用npm npm install --save date-fns # 或使用

月来better 8035

Linux内核支持串口屏,linux串口触摸屏设计总结

Linux serial touch 设计总结概述:最近在做嵌入式linux下串口触摸屏设计,遇到一些问题,经过查找资料和请教同事,总算把问题解决了,事后有把linux相关的内核代码仔细看了一遍,为了有点成果,特别写了个总结。如有任何问题请联系yxj_5421@http://www.doczj.com/doc/87b94b1e227916888486d76d.html,转载请标明出处。系统资源:L...

weixin_39935903的博客 1295

【亲测免费】 date-fns - 现代JavaScript日期实用工具库

date-fns - 现代JavaScript日期实用工具库 【免费下载链接】date-fns ⏳ Modern JavaScript date utility library ⌛️ 项目地址: https://gitcode.c...

gitblog_07155的博客 1317

DSP28377内存不够用?手把手教你合并RAM/FLASH块,解决CCS20链接器报错

本文详细介绍了在CCS20开发环境中解决DSP28377内存不足问题的方法,通过合并RAM/FLASH块优化CMD文件配置,有效解决链接器报错。文章包含内存布局对比、改写步骤、FreeRTOS集成注意事项及调试技巧,帮助开发者提升内存利用率与项目性能。

weixin_42524762的博客 143

树莓派CSI/DSI二合一接口深度玩法:同时驱动MIPI摄像头和屏幕的配置秘籍

本文详细解析了树莓派5上CSI/DSI二合一接口的深度玩法,提供了同时驱动MIPI摄像头和屏幕的完整配置秘籍。从硬件连接到软件设置,包括config.txt的优化配置,帮助用户充分利用树莓派5的双多功能接口,实现高效的双设备工作模式。

weixin_30687051的博客 573

探索高效日期处理:date-fns 框架深度解析

探索高效日期处理:date-fns 框架深度解析 【免费下载链接】date-fns ⏳ Modern JavaScript date utility library ⌛️ 项目地址: https://gitcode.com/gh_mirrors/da/date-f...

gitblog_00045的博客 1324

Windows10下安装VMware16虚拟机

由于本人系统为Windows 10 家庭中文版,无法安装Linux子系统WSL,虽然网上也有强制安装的方法,但为保险起见,还是把之前的VMware虚拟机重新进行安装,并浅浅记录一下安装过程。

沉香best的博客 861

【Web技术】1518- 抛弃 moment.js,基于 date-fns 封装日期相关 utils

作者:jjjona0215https://juejin.cn/post/7151050708094189582前言本文将简要介绍前端常用日期处理库:官方停止维护的moment.js,无缝代替moment.js的day.js,逐渐流行的date-fns,最后基于date-fns封装常用日期处理的utils。2022年了,如果项目中有用moment.js的可以用day.js代替减少体积做优化,新项目可...

pingan8787 631

爬虫:一文掌握 Pydoll 的详细使用(彻底改变浏览器自动化,且能绕过绕过验证码!)

Pydoll正在彻底改变浏览器自动化!与其他解决方案不同,它消除了对Web驱动程序的需求,提供了流畅可靠的自动化体验和本机异步性能。

数据知道的博客 1万+

飞牛NAS系统盘占用过高排查与解决全记录(已有效解决)

📢NAS弹出系统盘占用过高预警?别慌!亲测解决全流程来啦~ 精准定位根源+安全迁移数据,附详细实操步骤,帮同款困扰的你高效释空间、少走弯路!

XiaoqiangClub的博客 3099

date-fns日期格式化_使用date-fns轻松实现JS中的日期操作

date-fns日期格式化 总览 (Overview) Ever written a method to get the time of day in GMT? or have wondered if I need to convert the time to UTC? Most applications have some common date-time manipulations which...

weixin_26750481的博客 5664

YOLOv11【第六章:模型压缩与极致优化篇·第15节】YOLOv11 专用剪枝工具库使用指南!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 1312

input date js触发日期框_该抛弃Moment.js了!date-fn.js一个简单好用的JavaScript日期库

用JavaScript处理日期并不容易。因此,如果您查看大多数应用程序的 package.json 文件,通常会在其中找到像 Moment.js 这样的库。它对开发人员对解析/格式化/计算日期而言不再那么艰巨,但 Moment.js 是最早臭名昭著的库之一。但是您知道一个名为 date-fns 的库吗?date-fn官网date-fns 通常被认为是 Moment.js 的一个有价值的替代品。不仅...

weixin_39720510的博客 508

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

date moment 字符串 转_该抛弃Moment.js了!date-fn.js一个简单好用的JavaScript日期库

用JavaScript处理日期并不容易。因此,如果您查看大多数应用程序的 package.json 文件,通常会在其中找到像 Moment.js 这样的库。它对开发人员对解析/格式化/计算日期而言不再那么艰巨,但 Moment.js 是最早臭名昭著的库之一。但是您知道一个名为 date-fns 的库吗?date-fn官网date-fns 通常被认为是 Moment.js 的一个有价值的替代品。不仅...

weixin_42571738的博客 168

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

7种最佳JavaScript日期库

英文 | https://blog.logrocket.com/javascript-date-libraries/从理论上讲,向您的应用程序添加工作日期似乎总是一件容易的事,除非您尝试...

web前端开发 4374

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

date javascript 时区_7种最佳JavaScript日期库

英文 | https://blog.logrocket.com/javascript-date-libraries/从理论上讲,向您的应用程序添加工作日期似乎总是一件容易的事,除非您尝试这样做。总是会遇到麻烦,无论是在尝试使您的网站国际化时的时区问题,还是以所需格式显示日期的问题,甚至试图对它们进行一些基本的算术运算。不幸的是,JavaScript并没有真正准备好处理日期。这有点讽刺,因...

weixin_30942339的博客 227

date javascript 时区_第23节 Datejs 日期库-Web前端开发之Javascript-零点程序员-王唯

Datejs 是一个开源的JavaScript库,用来解析、格式化和处理日期数据,支持多种语言的日期格式处理;官网:www.datejs.com/Moment.js 是一个简单易用的轻量级JavaScript日期处理类库,提供了日期格式化、日期解析等功能。它支持在浏览器和NodeJS两种环境中运行;date-fns库:现代 JavaScript 日期实用程序库。date-fns 提供了最全面,最简...

weixin_39588983的博客 419

date javascript 时区_JavaScript还可以处理日期?你只需要这样做

与日期相关的问题与JavaScript一样古老。从理论上讲,如果不是因为API的许多弱点,可以使用JavaScript的date对象执行日期计算。幸运的是,有一些有用的库可以为我们节省很多工作。其中之一是date-fns。一个问题,例如,是与日期对象不同的时区的处理,由于JavaScript使用当前系统时区为基础。这可能会导致困难,尤其是涉及跨多个时区的应用程序时。月份的表示形式是JavaScri...

weixin_32540969的博客 136

3个JavaScript日期库

在写项目的时候,遇到对一些时间的处理,代码写起来是相当的不方便,处理起来很纠结,于是借用JavaScript日期库,用一些前面的大牛总结好的东西,如同锦上添花一般,工作中节省了一大部分的时间,当时有空余的时间也可以去仔细倒腾一下,今天就推荐3个比较常见的JavaScript日期库。 1:Moment star:44k 文档: https://momentjs.com/ GitHub地址: http...

祈澈菇凉 1239

date-fns 周助手函数

date-fns 周助手函数 date-fns 周助手函数date-fns为浏览器中操作JAVAScript日期提供了最全面、最简单、最一致的工具集,并且可以在node.js中使用!常见的类似的库还有moment.js和day.js!

能带孩子会做饭 1201

3个常用的JavaScript日期库

在写项目的时候,遇到对一些时间的处理,代码写起来是相当的不方便,处理起来很纠结,于是借用JavaScript日期库,用一些前面的大牛总结好的东西,如同锦上添花一般,工作中节省了一大部分的...

祈澈菇凉 2669

momentjs

Moment.js 是一个用于处理日期和时间的 JavaScript 库,它提供了许多方便的函数和方法来操作、格式化和解析日期时间。

weixin_51676646的博客 548

momentjs、dayjs、date-fns

时间处理库

qinnzheng 616

js moment.js日期操作类 datetime,日期操作,dayjs

http://momentjs.com/ JS时间处理插件MomentJS https://juejin.im/post/5a2bdc55f265da432b4abf5e Day.js 2kB超轻量时间库 和Moment.js一样的API https://juejin.im/post/5ade86ce518825673277da67 dayjs官方API:https://github.c...

weixin_30284355的博客 232

now.js 0.1.0 发布了

now.js是什么 now.js是一个javascript的时间操作小工具,类似date-fns和moment。 长啥样 简单的把示例放这,更多用法请到github去发现。 import Now from 'now.js'; // for node(browser do not need this) now = new Now() n...

weixin_34268310的博客 131
上一篇: vue+el-timeline组件:打造动态表格时间线的新利器
下一篇: 从此告别表单数据丢失!vue教你缓存当前页面信息(keep-alive)
水星记_
水星记_ 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄6年 13万+粉丝 212原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水星记_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值