每天一个知识点——dayjs常用的语法示例

日期时间处理需求

  • 关于时间的处理,一般来说使用公共库更加优雅、方便
  • 否则的话,自己就要写一堆处理时间的函数
  • 比如:我需要一个将当前时间,转换成年月日时分秒格式的函数
  • 如下:
js 复制代码
function formatCurrentTimeFn() {
  const now = new Date();
  
  const year = now.getFullYear();
  const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以要+1
  const day = String(now.getDate()).padStart(2, '0');
  const hours = String(now.getHours()).padStart(2, '0');
  const minutes = String(now.getMinutes()).padStart(2, '0');
  const seconds = String(now.getSeconds()).padStart(2, '0');
  
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}

// 使用示例
console.log(formatCurrentTimeFn()); // 输出类似:2025-06-04 14:30:45
  • 而使用了时间日期处理的库后,直接:dayjs().format('YYYY-MM-DD HH:mm:ss'))即可

dayjs VS momentjs

  • momentjs大而全(67KB),兼容性好,但是笨重
  • dayjs正好相反(2KB),并且可通过各种插件,弥补和momentjs的差距
  • 笔者建议:如果有时区要求,不建议用dayjs

dayjs获取当前的年月日时分秒

假设今天是2025年6月4日

新建一个html文件,而后引入cdn:

js 复制代码
<script src="https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.13/dayjs.min.js"></script>

获取时间日期相关信息:

js 复制代码
// 获取当前时间的年份
console.log('当前年份:', dayjs().year()); // 2025年

// 获取当前时间的月份(0-11)
console.log('当前月份:', dayjs().month() + 1); // 6月 // 月份从0开始,所以加1

// 获取当前时间的日期几号
console.log('当前日期几号:', dayjs().date()); // 4号

// 获取当前时间的星期几(0-6,0表示星期日,6表示星期六)
console.log('当前星期几:', dayjs().day()); // 3 // 星期三

// 获取当前时间的小时(几点)
console.log('当前小时:', dayjs().hour()); // 12时

// 获取当前时间的分钟
console.log('当前分钟:', dayjs().minute()); // 35分

// 获取当前时间的秒钟
console.log('当前秒:', dayjs().second()); // 4秒

// 获取当前时间的毫秒
console.log('当前毫秒:', dayjs().millisecond()); // 667

注意:dayjs的语法中:dayjs()[unit]() === dayjs().get(unit)

所以,还可以这样写:

js 复制代码
console.log(dayjs().get('year')); // 2025

console.log(dayjs().get('month')); // 5 // 月份从0开始,所以是5

console.log(dayjs().get('date')); // 4

console.log(dayjs().get('day')); // 3 // 星期三

console.log(dayjs().get('hour')); // 12

console.log(dayjs().get('minute')); // 35

console.log(dayjs().get('second')); // 4

console.log(dayjs().get('millisecond')); // 667

dayjs的format格式化

js 复制代码
// 国际化时间格式(ISO 8601)默认带时区
const ISO8601 = dayjs().format();
console.log('ISO 8601国际化时间格式:', ISO8601); // 2025-06-04T09:35:04+08:00

// 自定义格式化时间【 dayjs()不传时间,就表示当前】
console.log('四位数年月日时分秒格式:', dayjs().format('YYYY-MM-DD HH:mm:ss')); // 2025-06-04 09:35:04

// 两位数年月日时分秒格式
console.log('两位数年月日时分秒格式:', dayjs().format('YY-MM-DD HH:mm:ss')); // 25-06-04 09:35:04

console.log('横杠年月日格式:', dayjs().format('YYYY-MM-DD')); // 2025-06-04

console.log('斜杠年月日格式:', dayjs().format('DD/MM/YYYY')); // 04/06/2025

console.log('时分秒格式:', dayjs().format('HH:mm:ss')); // 09:35:04

console.log('时分格式:', dayjs().format('HH:mm')); // 09:35

// 自定义格式化时间【 dayjs()传时间,就格式化传递进去的时间】
console.log('年月日格式:', dayjs('2025-06-04 10:25:20').format('YYYY-MM-DD')); // 2025-06-04

console.log('时分秒格式:', dayjs('2025-06-04 10:25:20').format('HH:mm:ss')); // 09:35:04

console.log('时分格式:', dayjs('2025-06-04 10:25:20').format('HH:mm')); // 09:35

// 当然,也可以传递时间戳毫秒数之类的,不赘述
console.log('时分格式:', dayjs(1749013684020).format('HH:mm')); // 09:35

dayjs的日期加减

js 复制代码
// 获取当前时间
console.log('当前时间:', dayjs().format('YYYY-MM-DD HH:mm:ss')); // 2025-06-04 09:35:04

// 获取当前时间的前一天
console.log('前一天:', dayjs().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss')); // 2025-06-03 09:35:04

// 获取当前时间的后一天
console.log('后一天:', dayjs().add(1, 'day').format('YYYY-MM-DD HH:mm:ss')); // 2025-06-05 09:35:04

// 获取当前时间的前一周
console.log('前一周:', dayjs().subtract(1, 'week').format('YYYY-MM-DD HH:mm:ss')); // 2025-05-28 09:35:04

// 获取当前时间的后一周
console.log('后一周:', dayjs().add(1, 'week').format('YYYY-MM-DD HH:mm:ss')); // 2025-06-11 09:35:04

// 获取当前时间的前一个月
console.log('前一个月:', dayjs().subtract(1, 'month').format('YYYY-MM-DD HH:mm:ss')); // 2025-05-04 09:35:04

// 获取当前时间的后一个月
console.log('后一个月:', dayjs().add(1, 'month').format('YYYY-MM-DD HH:mm:ss')); // 2025-07-04 09:35:04 

// 获取当前时间的前一年
console.log('前一年:', dayjs().subtract(1, 'year').format('YYYY-MM-DD HH:mm:ss')); // 2024-06-04 09:35:04

// 获取当前时间的后一年
console.log('后一年:', dayjs().add(1, 'year').format('YYYY-MM-DD HH:mm:ss')); // 2026-06-04 09:35:04

// 获取当前时间的前一个小时
console.log('前一个小时:', dayjs().subtract(1, 'hour').format('YYYY-MM-DD HH:mm:ss')); // 2025-06-04 08:35:04

// 获取当前时间的后一个小时
console.log('后一个小时:', dayjs().add(1, 'hour').format('YYYY-MM-DD HH:mm:ss')); // 2025-06-04 10:35:04

// 获取当前时间的前一分钟
console.log('前一分钟:', dayjs().subtract(1, 'minute').format('YYYY-MM-DD HH:mm:ss')); // 2025-06-04 09:34:04

// 获取当前时间的后一分钟
console.log('后一分钟:', dayjs().add(1, 'minute').format('YYYY-MM-DD HH:mm:ss')); // 2025-06-04 09:36:04

// 获取当前时间的前一秒
console.log('前一秒:', dayjs().subtract(1, 'second').format('YYYY-MM-DD HH:mm:ss')); // 2025-06-04 09:35:03

// 获取当前时间的后一秒
console.log('后一秒:', dayjs().add(1, 'second').format('YYYY-MM-DD HH:mm:ss')); // 2025-06-04 09:35:05

// 获取当前时间的前一毫秒
console.log('前一毫秒:', dayjs().subtract(1, 'millisecond').format('YYYY-MM-DD HH:mm:ss.SSS')); // 2025-06-04 09:35:04.003

// 获取当前时间的后一毫秒
console.log('后一毫秒:', dayjs().add(1, 'millisecond').format('YYYY-MM-DD HH:mm:ss.SSS')); // 2025-06-04 09:35:04.005

日期前后相等比较

js 复制代码
/**
 * 假设今天是6月5号
 * */
 
console.log('是否日期相同', dayjs().isSame(dayjs('2025-06-05'), 'day')); // true

console.log('是否在日期之前', dayjs().isBefore(dayjs('2025-06-06'), 'day')); // true

console.log('是否在日期之后', dayjs().isAfter(dayjs('2025-06-03'), 'day')); // true

日期的差值diff

计算两个日期之间,差了多久时间

js 复制代码
const date1 = dayjs('2019-01-25 12:00:02')
const date2 = dayjs('2019-01-25 12:00:01')
console.log('date1和date2差了:', date1.diff(date2)); // 默认差值单位毫秒数 1000

const date3 = dayjs('2019-01-25')
const date4 = dayjs('2019-02-25')
console.log(date4.diff(date3, 'month')) // 1

指定以月份为单位,可选单位有 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond' 想要支持季度,需额外下载QuarterOfYear插件

获取时间戳毫秒数

js 复制代码
// 获取当前时间的时间戳,单位为毫秒
console.log('毫秒时间戳', dayjs().valueOf()); // 1749113764926

获取时间戳秒数

js 复制代码
// 获取当前时间的时间戳,单位为秒
console.log('秒时间戳', dayjs().unix()); // 1749113764

获取月份有多少天

js 复制代码
// 获取某个时间的月份有多少天
console.log('dayjs().daysInMonth()', dayjs().daysInMonth()); // 30 // 现在是6月份,所以30天

开始时间和结束时间

js 复制代码
// 获取当前时间所在天的开始时间
console.log('开始时间', dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss')); // 2025-06-05 00:00:00

// 获取当前时间所在天的结束时间
console.log('结束时间', dayjs().endOf('day').format('YYYY-MM-DD HH:mm:ss')); // 2025-06-05 23:59:59

每天一个知识点...

相关推荐
拉不动的猪2 小时前
都25年啦,还有谁分不清双向绑定原理,响应式原理、v-model实现原理
前端·javascript·vue.js
狂炫一碗大米饭3 小时前
一文打通TypeScript 泛型
前端·javascript·typescript
exploration-earth5 小时前
本地优先的状态管理与工具选型策略
开发语言·前端·javascript
哈贝#6 小时前
vue和uniapp聊天页面右侧滚动条自动到底部
javascript·vue.js·uni-app
Lazy_zheng6 小时前
🚀 前端开发福音:用 json-server 快速搭建本地 Mock 数据服务
前端·javascript·vue.js
用户2519162427116 小时前
ES6之块级绑定
javascript
ZzMemory6 小时前
藏起来的JS(四) - GC(垃圾回收机制)
前端·javascript·面试
林太白6 小时前
前端必会之Nuxt.js
前端·javascript·vue.js
晓晓莺歌6 小时前
vue-router路由问题:可以通过$router.push()跳转,但刷新后又变成空白页面
前端·javascript·vue.js
前端Hardy6 小时前
HTML&CSS:高颜值视差滚动3D卡片
前端·javascript·html