【Day.js】一个轻量2KB的处理时间和日期的JavaScript 库,常用API记录与分享
关于时间的操作,一直在使用momentjs这个库。方便灵巧,功能强大。唯一的缺点:包大小为200K。精简的方案:如dayjs和miment。
dayjs本身就是对标momentjs进行开发的:
Day.js is a minimalist JavaScript library that parses, validates, manipulates, and displays dates and times for modern browsers with a largely Moment.js-compatible API. If you use Moment.js, you already know how to use Day.js.
它的用法非常简单。
dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss');
和momentjs用法基本一模一样的。dayjs的API和moment几乎一模一样,所以如果想要替换到现有的momentjs代码,直接替换为dayjs即可。而且 dayjs的大小: 2KB!!!
github地址
安装
NPM:
npm install dayjs --save
import dayjs from 'dayjs'
// 或者 CommonJS
// var dayjs = require('dayjs');
dayjs().format();
CDN:
<!-- 最新的压缩后的 JavaScript 文件 -->
<script src="https://unpkg.com/dayjs"></script>
<script>dayjs().format();
</script>
API中文文档
常用API参考:
- 当前时间
dayjs()- 时间字符串
dayjs(‘2018-06-03’)- 时间戳
dayjs(1528361259484)- Date 对象
dayjs(new Date(2018,8,18))- 复制
dayjs().clone()- 检测当前 Dayjs 对象是否是一个有效的时间
dayjs().isValid()取值赋值
获取/设置
年 : dayjs().year()月 : dayjs().month()
季度 : dayjs().quarter()
日 : dayjs().date()
星期 : dayjs().day()
时 : dayjs().hour()
分 : dayjs().minute()
秒 : dayjs().second()
毫秒 : dayjs().millisecond()获取
dayjs().get(‘year’)
dayjs().get(‘month’)设置
dayjs().set(‘year’,2017)
dayjs().set(‘month’,9)所有可用单位列表
单位 缩写 描述 date D 日期 day d 星期(星期日0,星期六6) month M 月份(0-11) year y 年 hour h 小时 minute m 分钟 second s 秒 millisecond ms 毫秒 操作
增加时间并返回一个新的 Dayjs() 对象
dayjs().add(7, ‘day’)
dayjs().add(7, ‘year’)所有可用单位列表
单位 缩写 描述 week w 周 day d 星期(星期日0,星期六6) month M 月份(0-11) quarter Q 依赖 QuarterOfYear
插件year y 年 hour h 小时 minute m 分钟 second s 秒 millisecond ms 毫秒 减少时间并返回一个新的 Dayjs() 对象
dayjs().subtract(7, ‘year’)
dayjs().subtract(7, ‘month’)返回当前时间的开头时间的 Dayjs() 对象,如月份的第一天。
dayjs().startOf(‘year’)
dayjs().startOf(‘month’)所有可用单位列表
单位 缩写 描述 date D 天00:00 day d 星期00:00 month M 月第一天00:00 quarter Q 季度第一个月第一天00:00,依赖 QuarterOfYear
插件year y 1月1日00点 week w 周第一天00:00 isoWeek 周(ISO) hour h 00:00:00 minute m 00:00 second s 00 millisecond ms 0 返回当前时间的末尾时间的 Dayjs() 对象,如月份的最后一天。
dayjs().endOf(‘month’)
dayjs().endOf(‘year’)显示
格式化
dayjs().format()
dayjs().format(‘YYYY-MM-DD dddd HH:mm:ss.SSS A’)
Format Output Description YY 18 年,两位数 YYYY 2018 年,四位数 M 1-12 月,从1开始 MM 01-12 月,两位数字 MMM Jan-Dec 月,英文缩写 D 1-31 日 DD 01-31 日,两位数 H 0-23 24小时 HH 00-23 24小时,两位数 h 1-12 12小时 hh 01-12 12小时,两位数 m 0-59 分钟 mm 00-59 分钟,两位数 s 0-59 秒 ss 00-59 秒,两位数 S 0-9 毫秒(百),一位数 SS 00-99 毫秒(十),两位数 SSS 000-999 毫秒,三位数 Z -05:00 UTC偏移 ZZ -0500 UTC偏移,两位数 A AM / PM 上/下午,大写 a am / pm 上/下午,小写 Do 1st… 31st 月份的日期与序号 时间差
dayjs(‘2018-06-08’).diff(dayjs(‘2017-06-01’),‘years’)
dayjs(‘2018-06-08’).diff(dayjs(‘2017-06-01’),‘day’)
dayjs(‘2018-06-08’).diff(dayjs(‘2017-06-01’),‘hour’)
单位 缩写 描述 week w 周 day d 星期(星期日0,星期六6) month M 月份(0-11) quarter Q 依赖 QuarterOfYear
插件year y 年 hour h 小时 minute m 分钟 second s 秒 millisecond ms 毫秒 Unix 时间戳 (毫秒)
dayjs().valueOf()Unix 时间戳 (秒)
dayjs().unix()返回月份的天数
dayjs().daysInMonth()获取月天数
dayjs().toDate()
dayjs('2019-01-25').daysInMonth() // 31
返回原生的 Date 对象
dayjs().toDate()返回包含时间数值的数组
dayjs().toArray()dayjs('2019-01-25').toArray() // [ 2019, 0, 25, 0, 0, 0, 0 ]
当序列化 Dayjs 对象时,会返回 ISO8601 格式的字符串
dayjs().toJSON() //2018-06-08T02:44:30.599Z返回 ISO8601 格式的字符串
dayjs().toISOString() //2018-06-08T02:46:06.554Z返回包含时间数值的对象
dayjs().toObject()dayjs('2019-01-25').toObject() /* { years: 2019,months: 0,date: 25,hours: 0,minutes: 0,seconds: 0,milliseconds: 0 } */
字符串
dayjs().toString()查询
- 检查一个 Dayjs 对象是否在另一个 Dayjs 对象时间之前
dayjs(‘2018-06-01’).isBefore(dayjs(‘2018-06-02’))- 检查一个 Dayjs 对象是否和另一个 Dayjs 对象时间相同
dayjs().isSame(dayjs())- 检查一个 Dayjs 对象是否在另一个 Dayjs 对象时间之后
dayjs().isAfter(dayjs())
【Day.js】一个轻量2KB的处理时间和日期的JavaScript 库,常用API记录与分享相关推荐
- Day.js —— 一个轻量型的日期时间库 moment 的完美代替品
对于日期时间处理,常见有moment.js luxon等库,然而这些库在个人看来有点大了,而平常人往往只用到其中个别功能,这就有点浪费,当然也可以抽取想要模块,但稍显繁琐.对于这种情况,我一般喜欢自己 ...
- Vant 1.0 发布:轻量、可靠的移动端 Vue 组件库
Vant 是有赞前端团队维护的移动端 Vue 组件库,提供了一整套 UI 基础组件和业务组件.通过 Vant 可以快速搭建出风格统一的页面,提升开发效率. Vant 一.关于 1.0 距离 Vant ...
- js 实现轻量ps_简单轻量的池实现
js 实现轻量ps 对象池是包含指定数量的对象的容器. 从池中获取对象时,在将对象放回之前,该对象在池中不可用. 池中的对象具有生命周期:创建,验证,销毁等.池有助于更好地管理可用资源. 有许多使用示 ...
- Javalin:一个轻量的 Web Framework
说起 Java 语言下的 Web 框架那就非 Spring Framework 不可了,但是今天在和别人在聊天的过程中发现了一个新奇的项目 Javalin.Javalin 是一个轻量的 Web 框架. ...
- 我们开源了一个轻量的 Web IDE UI 框架 - Molecule
Molecule , 一个轻量的 Web IDE UI 框架 https://github.com/DTStack/moleculegithub.com/DTStack/molecule 简介 Mo ...
- 在 C++ 中实现一个轻量的标记清除 gc 系统
在 C++ 中实现一个轻量的标记清除 gc 系统 最近想把 engine 做一个简单 C++ 封装,结合 QT 使用.engine 本身是用纯 C 实现的,大部分应用基于 lua 开发.对对象生命期管 ...
- 关于VSCode中工作区的讲解与使用工作区还你一个轻量 的VSCode
VSCode的使用率在逐渐提高,但安装太多的插件会使得VSCode变得臃肿,甚至运行变慢,占用太多内存,此文章介绍了工作区,并如何来使用工作区更好地体验VSCode. 初次使用VSCode,肯定有很多 ...
- windows中常用的一个轻量的扫描软件xray_windows_amd64
1.xray_windows_amd64现在windows中常用的一个轻量的扫描软件,用法要求各位同学通过物联网查找使用方式 完成对文章管理系统cms页面进行漏洞扫描. ①安装证书,在命令框xray_ ...
- Multipass - 一个轻量虚拟机管理器
Multipass 是一个轻量虚拟机管理器,是由 Ubuntu 运营公司 Canonical 所推出的开源项目.运行环境支持 Linux.Windows.macOS.在不同的操作系统上,使用的是不同的 ...
最新文章
- C/C++ 读取任意数目的整数
- mysql bigint 运算_mysql中int、bigint、smallint 和 tinyint的区别详细介绍
- Android -- ImageLoader本地缓存
- [Linux]history 显示命令执行的时间
- Android插件化(使用Small框架)
- 搭建自己的Docker Harbor
- 搞定系统设计 03:系统设计面试的答题框架
- ES5-9 【utils】构造函数及实例化原理、包装类
- Flink常见流处理API
- ESXI开启SNMP服务
- linux mount_nodev函数,mount()函数 Unix/Linux
- 应对计算机领域中后门,网络课程论坛中长尾现象的应对策略——以《计算机应用基础》网络课程为例...
- ruby语言仅仅是昙花一现
- CNN 卷积神经网络 池化层Pooling 动手学深度学习v2 pytorch
- 电力系统分析工具包pypower简易使用教程
- 商城小程序上新的物流助手功能,可以为商家运营带来什么帮助?
- ARM资源免费下载——超级全面,力荐
- python通过opc读plc实例_python调用openopc读写plc
- docker配置加速器的几种方案
- 全球 Hoster Point DNS 遭受重大 DDoS 攻击