日期时间处理需求
- 关于时间的处理,一般来说使用公共库更加优雅、方便
- 否则的话,自己就要写一堆处理时间的函数
- 比如:我需要一个将当前时间,转换成年月日时分秒格式的函数
- 如下:
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
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
每天一个知识点...