学习dayjs库

一、简介

dayjs 是一个轻量级的 JavaScript 库,用于解析、验证、操作和格式化日期。它类似于 moment.js,但体积更小,性能更好。

二、安装

①使用 npm 安装

npm install dayjs

②在 HTML 中引入

<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>

三、常用方法

  1. format([String]): 格式化日期。
    import dayjs from 'dayjs';
    
    const now = dayjs();
    console.log(now.format()); // 输出: YYYY-MM-DDTHH:mm:ssZ (默认格式)
    console.log(now.format('YYYY-MM-DD')); // 输出: 2023-10-05
    console.log(now.format('YYYY/MM/DD')); // 输出: 2023/10/05
    console.log(now.format('MM/DD/YYYY')); // 输出: 10/05/2023
    console.log(now.format('DD-MM-YYYY')); // 输出: 05-10-2023
    console.log(now.format('HH:mm:ss')); // 输出: 14:30:45 (假设当前时间为14:30:45)
    console.log(now.format('MMMM D, YYYY')); // 输出: October 5, 2023

  2. add(number, string): 添加时间。
    import dayjs from 'dayjs';
    
    const now = dayjs();
    console.log(now.add(1, 'day').format('YYYY-MM-DD')); // 输出: 2023-10-06 (假设当前日期为2023-10-05)
    console.log(now.add(2, 'month').format('YYYY-MM')); // 输出: 2024-12 (假设当前日期为2023-10-05)
    console.log(now.add(3, 'year').format('YYYY')); // 输出: 2026 (假设当前日期为2023-10-05)
    console.log(now.add(5, 'hour').format('HH:mm:ss')); // 输出: 19:30:45 (假设当前时间为14:30:45)
    console.log(now.add(30, 'minute').format('HH:mm:ss')); // 输出: 15:00:45 (假设当前时间为14:30:45)

  3. subtract(number, string): 减去时间。
    import dayjs from 'dayjs';
    
    const now = dayjs();
    console.log(now.subtract(1, 'day').format('YYYY-MM-DD')); // 输出: 2023-10-04 (假设当前日期为2023-10-05)
    console.log(now.subtract(2, 'month').format('YYYY-MM')); // 输出: 2023-08 (假设当前日期为2023-10-05)
    console.log(now.subtract(3, 'year').format('YYYY')); // 输出: 2020 (假设当前日期为2023-10-05)
    console.log(now.subtract(5, 'hour').format('HH:mm:ss')); // 输出: 09:30:45 (假设当前时间为14:30:45)
    console.log(now.subtract(30, 'minute').format('HH:mm:ss')); // 输出: 13:59:45 (假设当前时间为14:30:45)

  4. startOf(string) 和 endOf(string): 获取指定单位的开始或结束时间。
    import dayjs from 'dayjs';
    
    const now = dayjs('2023-10-05T14:30:45');
    console.log(now.startOf('year').format('YYYY-MM-DD')); // 输出: 2023-01-01
    console.log(now.startOf('month').format('YYYY-MM-DD')); // 输出: 2023-10-01
    console.log(now.startOf('day').format('YYYY-MM-DD')); // 输出: 2023-10-05
    console.log(now.startOf('hour').format('YYYY-MM-DD HH:mm:ss')); // 输出: 2023-10-05 14:00:00
    console.log(now.startOf('minute').format('YYYY-MM-DD HH:mm:ss')); // 输出: 2023-10-05 14:30:00
    
    console.log(now.endOf('year').format('YYYY-MM-DD')); // 输出: 2023-12-31
    console.log(now.endOf('month').format('YYYY-MM-DD')); // 输出: 2023-10-31
    console.log(now.endOf('day').format('YYYY-MM-DD')); // 输出: 2023-10-05
    console.log(now.endOf('hour').format('YYYY-MM-DD HH:mm:ss')); // 输出: 2023-10-05 14:59:59
    console.log(now.endOf('minute').format('YYYY-MM-DD HH:mm:ss')); // 输出: 2023-10-05 14:30:59

  5. isBefore(Dayjs|String) 和 isAfter(Dayjs|String): 比较日期。
    import dayjs from 'dayjs';
    
    const date1 = dayjs('2023-10-05');
    const date2 = dayjs('2023-10-06');
    
    console.log(date1.isBefore(date2)); // 输出: true
    console.log(date1.isAfter(date2)); // 输出: false
    
    const date3 = dayjs('2023-10-05');
    const date4 = dayjs('2023-10-05');
    
    console.log(date3.isBefore(date4)); // 输出: false
    console.log(date3.isAfter(date4)); // 输出: false

  6. diff(Dayjs|String, string, Boolean): 计算两个日期之间的差值。
    import dayjs from 'dayjs';
    
    const date1 = dayjs('2023-10-01');
    const date2 = dayjs('2023-10-10');
    
    console.log(date2.diff(date1, 'day')); // 输出: 9
    console.log(date2.diff(date1, 'month')); // 输出: 0
    console.log(date2.diff(date1, 'year')); // 输出: 0
    
    const date3 = dayjs('2023-10-05T14:30:45');
    const date4 = dayjs('2023-10-05T15:00:45');
    
    console.log(date4.diff(date3, 'hour')); // 输出: 0
    console.log(date4.diff(date3, 'minute')); // 输出: 30
    console.log(date4.diff(date3, 'second')); // 输出: 1800

  7. fromNow(Boolean) 和 toNow(Boolean): 获取相对时间描述。
    import dayjs from 'dayjs';
    import relativeTime from 'dayjs/plugin/relativeTime';
    
    // 加载插件
    dayjs.extend(relativeTime);
    
    const pastDate = dayjs().subtract(2, 'day');
    const futureDate = dayjs().add(3, 'day');
    
    console.log(pastDate.fromNow()); // 输出: 2 days ago
    console.log(futureDate.toNow()); // 输出: in 3 days
    
    const now = dayjs();
    console.log(now.fromNow()); // 输出: a few seconds ago
    console.log(now.toNow()); // 输出: in a few seconds

四、基本用法

// 引入 dayjs
import dayjs from 'dayjs';

// 获取当前时间
const now = dayjs();
console.log(now.format()); // 输出: YYYY-MM-DDTHH:mm:ssZ

// 格式化日期
console.log(dayjs().format('YYYY-MM-DD')); // 输出: 2023-10-05

// 解析日期字符串
const parsedDate = dayjs('2023-10-05');
console.log(parsedDate.format('MMM D, YYYY')); // 输出: Oct 5, 2023

// 日期运算
console.log(dayjs().add(1, 'day').format('YYYY-MM-DD')); // 明天的日期
console.log(dayjs().subtract(1, 'month').format('YYYY-MM')); // 上个月


                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/947712.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【openwrt】OpenWrt 路由器的 802.1X 动态 VLAN

参考链接 [OpenWrt Wiki] Wi-Fi /etc/config/wirelesshttps://openwrt.org/docs/guide-user/network/wifi/basic#wpa_enterprise_access_point 介绍 基于802.1X 无线网络身份验证࿰

Mac 环境 VVenC 编译与编码命令行工具使用教程

VVenC VVenC 是一个开源的高效视频编码器&#xff0c;专门用于支持 H.266/VVC (Versatile Video Coding) 标准的编码。H.266/VVC 是继 HEVC (H.265) 之后的新一代视频编码标准&#xff0c;主要目的是提供比 HEVC 更高的压缩效率&#xff0c;同时保持或提高视频质量。H.266/VVC…

wx016基于springboot+vue+uniapp的超市购物系统小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

RTC:实时时钟

RTC&#xff1a;实时时钟 1、实时时钟2、闹钟中断3、秒中断4、输出功能5、BKP的读写6、BKP的侵入事件 1、实时时钟 ①RTC.c #include "RTC.h"/*** brief&#xff1a;RTC初始化函数*/ RCC_PeriphCLKInitTypeDef RTCPeriphClkInit; //RTC时钟配置结构体 RTC_HandleT…

黑马JavaWeb开发跟学(十五).Maven高级

黑马JavaWeb开发跟学.十五.Maven高级 Maven高级1. 分模块设计与开发1.1 介绍1.2 实践1.2.1 分析1.2.2 实现 1.3 总结 2. 继承与聚合2.1 继承2.1.1 继承关系2.1.1.1 思路分析2.1.1.2 实现 2.1.2 版本锁定2.1.2.1 场景2.1.2.2 介绍2.1.2.3 实现2.1.2.4 属性配置 2.2 聚合2.2.1 介…

cka考试-03-k8s版本升级

一、原题 二、解答 [root@master ~]# kubectl get node NAME STATUS ROLES AGE VERSION master Ready control-plane,master 25h v1.22.12 node1 Ready worker 25h v1.22.12 node2 Ready worker …

【Java项目】基于SpringBoot的【垃圾分类系统】

【Java项目】基于SpringBoot的【垃圾分类系统】 技术简介&#xff1a;本系统使用采用B/S架构、Spring Boot框架、MYSQL数据库进行开发设计。 系统简介&#xff1a;使用者分为管理员和用户、垃圾分类管理员&#xff0c;实现功能包括管理员&#xff1a;首页、个人中心、用户管理、…

文本区域提取和分析——Python版本

目录 1. 图像预处理 2. 文本区域提取 3. 文本行分割 4. 文本区域分析 5. 应用举例 总结 文本区域提取和分析是计算机视觉中的重要任务&#xff0c;尤其在光学字符识别&#xff08;OCR&#xff09;系统、文档分析、自动化数据录入等应用中有广泛的应用。其目标是从图像中提…

华为的数字化转型框架和数字化转型成熟度评估方法

2016年&#xff0c;华为公司数字化转型变革规划汇报通过&#xff0c;一系列的变革项目由变革指导委员会(Executive Steering Committee,ESC)完成立项。8年多来&#xff0c;华为数字化转型工作初步取得了一些成果&#xff0c;比如&#xff1a; 实现“销售收入翻番&#xff0c;但…

算法 Class 006(二分搜索)

一、查找一个数 在一个有序数组中查找数字&#xff0c;每次一循环可 砍掉一半的值&#xff0c;只要确定了 arr[mid] 与 num 之间的关系。 大于num 忽略掉 mid及右边的数字 小于 num 忽略掉 mid 及左边的数字 二、 找大于等于 num 的最左位置 意思就是该下标及右边的数都是大于…

【工具整理】WIN换MAC机器使用工具整理

最近公司电脑升级&#xff0c;研发同学统一更换了 Mac Book Pro 笔记版电脑&#xff0c;整理一下安装了那些软件以及出处&#xff0c;分享记录下&#xff5e; 知识库工具 1、语雀 网址&#xff1a;语雀&#xff0c;为每一个人提供优秀的文档和知识库工具 语雀 个人花园&…

EdgeX规则引擎eKuiper

EdgeX 规则引擎eKuiper 一、架构设计 LF Edge eKuiper 是物联网数据分析和流式计算引擎。它是一个通用的边缘计算服务或中间件,为资源有限的边缘网关或设备而设计。 eKuiper 采用 Go 语言编写,其架构如下图所示: eKuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源…

Python脚本实现通过Vector VN1630A CAN盒子与ECU通信

1 安装 python-can 包 安装命令如下&#xff1a; pip install python-can安装完成后可用下面命令查看是否安装成功及版本。 pip show python-canName: python-can Version: 4.4.2 Summary: Controller Area Network interface module for Python Home-page: https://github.…

职场常用Excel基础04-二维表转换

大家好&#xff0c;今天和大家一起分享一下excel的二维表转换相关内容~ 在Excel中&#xff0c;二维表&#xff08;也称为矩阵或表格&#xff09;是一种组织数据的方式&#xff0c;其中数据按照行和列的格式进行排列。然而&#xff0c;在实际的数据分析过程中&#xff0c;我们常…

编程利器豆包MarsCode它来了

你在使用vsCode进行编写代码时是否遇到代码错误不知道如何修改&#xff1f;是否遇到代码复杂不知道逻辑业务&#xff1f;是否遇到只有思路不知道如何写出代码的情况&#xff1f; 现在&#xff0c;一款代码助手神器它来了&#xff0c;有了它&#xff0c;上面的问题和烦恼统统秒…

idea( 2022.3.2)打包报错总结

一 报错 class lombok.javac.apt.LombokProcessor (in unnamed module 0x4fe64d23) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing …

戴尔/Dell 电脑按什么快捷键可以进入 Bios 设置界面?

BIOS&#xff08;基本输入输出系统&#xff09;是计算机硬件与操作系统之间的桥梁&#xff0c;它负责初始化和测试系统硬件组件&#xff0c;并加载启动操作系统。在某些情况下&#xff0c;如调整启动顺序、更改系统时间或日期、修改硬件配置等&#xff0c;您可能需要进入BIOS进…

小程序组件 —— 25 组件案例 - 商品导航区域

这一节主要实现商品导航区的结构和样式&#xff0c;商品导航区没有新的知识点&#xff0c;主要使用之前学习的三个组件&#xff1a; view&#xff1a;视图容器iamge&#xff1a;图片组件text&#xff1a;文本组件 商品导航区由五个商品导航来组成&#xff0c;每一个视频导航都…

数据结构(ing)

学习内容 指针 指针的定义&#xff1a; 指针是一种变量&#xff0c;它的值为另一个变量的地址&#xff0c;即内存地址。 指针在内存中也是要占据位置的。 指针类型&#xff1a; 指针的值用来存储内存地址&#xff0c;指针的类型表示该地址所指向的数据类型并告诉编译器如何解…

Vue 中el-table-column 进行循环,页面没渲染成功

文章目录 前言效果图代码示例可能出现的问题及原因解决思路 前言 实现效果&#xff1a;el-table-column 进行循环&#xff0c;使之代码简化 遇到的问题&#xff1a; data进行默认赋值&#xff0c;操作列的删除都可以出来&#xff0c;其他表格里面的数据没出来 效果图 示例&am…