关于时间的操作,一直在使用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记录与分享相关推荐

  1. Day.js —— 一个轻量型的日期时间库 moment 的完美代替品

    对于日期时间处理,常见有moment.js luxon等库,然而这些库在个人看来有点大了,而平常人往往只用到其中个别功能,这就有点浪费,当然也可以抽取想要模块,但稍显繁琐.对于这种情况,我一般喜欢自己 ...

  2. Vant 1.0 发布:轻量、可靠的移动端 Vue 组件库

    Vant 是有赞前端团队维护的移动端 Vue 组件库,提供了一整套 UI 基础组件和业务组件.通过 Vant 可以快速搭建出风格统一的页面,提升开发效率. Vant 一.关于 1.0 距离 Vant ...

  3. js 实现轻量ps_简单轻量的池实现

    js 实现轻量ps 对象池是包含指定数量的对象的容器. 从池中获取对象时,在将对象放回之前,该对象在池中不可用. 池中的对象具有生命周期:创建,验证,销毁等.池有助于更好地管理可用资源. 有许多使用示 ...

  4. Javalin:一个轻量的 Web Framework

    说起 Java 语言下的 Web 框架那就非 Spring Framework 不可了,但是今天在和别人在聊天的过程中发现了一个新奇的项目 Javalin.Javalin 是一个轻量的 Web 框架. ...

  5. 我们开源了一个轻量的 Web IDE UI 框架 - Molecule

    Molecule , 一个轻量的 Web IDE UI 框架 https://github.com/DTStack/molecule​github.com/DTStack/molecule 简介 Mo ...

  6. 在 C++ 中实现一个轻量的标记清除 gc 系统

    在 C++ 中实现一个轻量的标记清除 gc 系统 最近想把 engine 做一个简单 C++ 封装,结合 QT 使用.engine 本身是用纯 C 实现的,大部分应用基于 lua 开发.对对象生命期管 ...

  7. 关于VSCode中工作区的讲解与使用工作区还你一个轻量 的VSCode

    VSCode的使用率在逐渐提高,但安装太多的插件会使得VSCode变得臃肿,甚至运行变慢,占用太多内存,此文章介绍了工作区,并如何来使用工作区更好地体验VSCode. 初次使用VSCode,肯定有很多 ...

  8. windows中常用的一个轻量的扫描软件xray_windows_amd64

    1.xray_windows_amd64现在windows中常用的一个轻量的扫描软件,用法要求各位同学通过物联网查找使用方式 完成对文章管理系统cms页面进行漏洞扫描. ①安装证书,在命令框xray_ ...

  9. Multipass - 一个轻量虚拟机管理器

    Multipass 是一个轻量虚拟机管理器,是由 Ubuntu 运营公司 Canonical 所推出的开源项目.运行环境支持 Linux.Windows.macOS.在不同的操作系统上,使用的是不同的 ...

最新文章

  1. C/C++ 读取任意数目的整数
  2. mysql bigint 运算_mysql中int、bigint、smallint 和 tinyint的区别详细介绍
  3. Android -- ImageLoader本地缓存
  4. [Linux]history 显示命令执行的时间
  5. Android插件化(使用Small框架)
  6. 搭建自己的Docker Harbor
  7. 搞定系统设计 03:系统设计面试的答题框架
  8. ES5-9 【utils】构造函数及实例化原理、包装类
  9. Flink常见流处理API
  10. ESXI开启SNMP服务
  11. linux mount_nodev函数,mount()函数 Unix/Linux
  12. 应对计算机领域中后门,网络课程论坛中长尾现象的应对策略——以《计算机应用基础》网络课程为例...
  13. ruby语言仅仅是昙花一现
  14. CNN 卷积神经网络 池化层Pooling 动手学深度学习v2 pytorch
  15. 电力系统分析工具包pypower简易使用教程
  16. 商城小程序上新的物流助手功能,可以为商家运营带来什么帮助?
  17. ARM资源免费下载——超级全面,力荐
  18. python通过opc读plc实例_python调用openopc读写plc
  19. docker配置加速器的几种方案
  20. 全球 Hoster Point DNS 遭受重大 DDoS 攻击

热门文章

  1. LintCode 题解 |Google 面试题:Take Coins
  2. 皮皮传 汉化 中文 全集
  3. is word 无法启动转换器 mswrd632.wpc
  4. Unity3D 游戏贴图 法线贴图 漫反射贴图 高光贴图
  5. 关于CAM卡(大卡)和智能卡(小卡)
  6. 国科大教务选课系统课程余量监测python3脚本
  7. 天猫积分自动抽奖Javascript代码
  8. 希望所有计算机专业同学都知道这些老师
  9. 软件开发团队中各个成员的英文简称, 收录早晚会用到.
  10. win10下怎么搭建asp环境