Day.js 是一个轻量级的 JavaScript 日期处理库,以下是常用用法:
以前经常使用 manba.js ,最近准备切换dayjs,下面记录一下常用使用方法
安装和引入
javascript
npm install dayjs
或者
pnpm install dayjs
javascript
import dayjs from 'dayjs'
基本用法
创建日期对象
javascript
// 当前时间
const now = dayjs()
// 解析字符串
const date1 = dayjs('2025-12-25')
const date2 = dayjs('2025-12-25 10:30:00')
// 解析时间戳
const timestamp = dayjs(1703472000000)
// 解析 Date 对象
const jsDate = new Date()
const date3 = dayjs(jsDate)
格式化输出
javascript
dayjs().format() // 2025-12-25T10:30:00+08:00
dayjs().format('YYYY-MM-DD') // 2025-12-25
dayjs().format('YYYY年MM月DD日') // 2025年12月25日
dayjs().format('HH:mm:ss') // 10:30:00
dayjs().format('YYYY-MM-DD HH:mm:ss') // 2025-12-25 10:30:00
获取和设置日期部分
javascript
const date = dayjs()
// 获取
date.year() // 2025
date.month() // 11 (0-11)
date.date() // 25
date.hour() // 10
date.minute() // 30
date.second() // 0
// 设置
date.year(2024)
date.month(0) // 一月
date.date(1)
日期操作
javascript
const date = dayjs()
// 增加
date.add(7, 'day') // 加7天
date.add(1, 'month') // 加1个月
date.add(2, 'year') // 加2年
// 减少
date.subtract(3, 'day') // 减3天
// 开始和结束
date.startOf('day') // 当天开始时间 00:00:00
date.startOf('month') // 当月第一天
date.endOf('day') // 当天结束时间 23:59:59
日期比较
javascript
const date1 = dayjs('2025-12-25')
const date2 = dayjs('2025-12-26')
date1.isBefore(date2) // true
date2.isAfter(date1) // true
date1.isSame(date2, 'day') // false
// 差值
date2.diff(date1, 'day') // 1 (天数差)
相对时间
javascript
dayjs().fromNow() // 几秒前 / 几分钟前
dayjs().toNow() // 几秒后 / 几分钟后
dayjs('2025-12-20').fromNow() // 5天前
常用插件
相对时间插件
javascript
import relativeTime from 'dayjs/plugin/relativeTime'
import 'dayjs/locale/zh-cn' // 中文
dayjs.extend(relativeTime)
dayjs.locale('zh-cn')
dayjs().fromNow() // 几秒前 几天前 一年前 ....
时区插件
javascript
import utc from 'dayjs/plugin/utc'
import timezone from 'dayjs/plugin/timezone'
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs().tz('Asia/Shanghai')
日期差值的更精确计算
javascript
import isSameOrBefore from 'dayjs/plugin/isSameOrBefore'
import isSameOrAfter from 'dayjs/plugin/isSameOrAfter'
dayjs.extend(isSameOrBefore)
dayjs.extend(isSameOrAfter)
实用示例
javascript
// 获取本周第一天(周一)
const weekStart = dayjs().startOf('week')
// 获取本月最后一天
const monthEnd = dayjs().endOf('month')
// 判断是否是今天
const isToday = dayjs().isSame(dayjs(), 'day')
// 格式化持续时间
const start = dayjs('2025-12-25 10:00:00')
const end = dayjs('2025-12-25 14:30:00')
const duration = end.diff(start, 'minute') // 270分钟
// 生成日期范围
const dates = []
for (let i = 0; i < 7; i++) {
dates.push(dayjs().add(i, 'day').format('YYYY-MM-DD'))
}
Day.js 的 API 设计类似 Moment.js,但体积更小,性能更好,是现代项目中处理日期时间的首选库。