Day.js 是一个轻量级的 JavaScript 日期处理库,以下是常用用法:

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,但体积更小,性能更好,是现代项目中处理日期时间的首选库。

相关推荐
哈__2 小时前
React Native 鸿蒙跨平台开发:Vibration 实现鸿蒙端设备的震动反馈
javascript·react native·react.js
WebGISer_白茶乌龙桃2 小时前
Cesium实现“悬浮岛”式,三维立体的行政区划
javascript·vue.js·3d·web3·html5·webgl
小Tomkk2 小时前
⭐️ StarRocks Web 使用介绍与实战指南
前端·ffmpeg
不一样的少年_2 小时前
产品催: 1 天优化 Vue 官网 SEO?我用这个插件半天搞定(不重构 Nuxt)
前端·javascript·vue.js
-dcr2 小时前
50.智能体
前端·javascript·人工智能·ai·easyui
行者962 小时前
Flutter跨平台开发适配OpenHarmony:进度条组件的深度实践
开发语言·前端·flutter·harmonyos·鸿蒙
云和数据.ChenGuang2 小时前
Uvicorn 是 **Python 生态中用于运行异步 Web 应用的 ASGI 服务器**
服务器·前端·人工智能·python·机器学习
IT_陈寒2 小时前
SpringBoot 3.0实战:这5个新特性让你的开发效率提升50%
前端·人工智能·后端
哈__2 小时前
React Native 鸿蒙跨平台开发:LayoutAnimation 实现鸿蒙端页面切换的淡入淡出过渡动画
javascript·react native·react.js
遗憾随她而去.2 小时前
Webpack 面试题
前端·webpack·node.js