【Day.js 教程】前端日期处理速查从核心 API 到实战用法一文吃透轻量日期库避开月份索引与不可变高频坑 文章目录一、创建和解析日期二、格式化输出转成字符串三、获取时间各部分四、设置时间修改某一项五、增减时间加减几天、几月等六、获取时间段的开始/结束七、日期比较八、计算时间差九、其他常用方法十、小白入门示例同学们好我是 Eugene尤金一个拥有多年中后台开发经验的前端工程师~Eugene 发音很简单/juːˈdʒiːn/大家怎么顺口怎么叫就好你是否也有过明明学过很多技术一到关键时候却讲不出来、甚至写不出来你是否也曾怀疑自己是不是太笨了明明感觉会却总差一口气就算想沉下心从头梳理可工作那么忙回家还要陪伴家人。一天只有24小时时间永远不够用常常感到力不从心。技术行业本就是逆水行舟不进则退。如果你也有同样的困扰别慌。从现在开始跟着我一起心态归零利用碎片时间来一次彻彻底底的基础扫盲。这一次我们一起慢慢来扎扎实实变强。不搞花里胡哨的理论堆砌只分享看得懂、用得上的前端干货咱们一起稳步积累真正摆脱“面向搜索引擎写代码”的尴尬。有没有同学不想查官网还想快速的找到api是怎么用的看这里一文帮助你快速的找到Day.js的不包含插件的API。如果有没说明清楚的地方欢迎在评论区指正。中文官网的链接Day.js一、创建和解析日期API作用示例说明dayjs()获取当前时间dayjs()返回当前日期时间dayjs(字符串)解析日期字符串dayjs(2025-02-20)支持YYYY-MM-DD、YYYY-MM-DD HH:mm:ss等dayjs(数字)解析时间戳dayjs(1708416000000)毫秒级时间戳dayjs(Date对象)从原生 Date 创建dayjs(new Date())包装原生 JS 的 Date.isValid()判断是否合法日期dayjs(abc).isValid()返回true/false⬆ 返回目录二、格式化输出转成字符串格式符含义示例输出YYYY4位年份2025YY2位年份25MM2位月份01-1202M月份1-122DD2位日期01-3120D日期1-3120HH24小时制小时00-2314hh12小时制小时02mm分钟00-5930ss秒00-5945A上午/下午AM / PM使用示例写法示例输出.format(YYYY-MM-DD)2025-02-20.format(YYYY-MM-DD HH:mm:ss)2025-02-20 14:30:45.format(YYYY年MM月DD日)2025年02月20日.format(MM/DD/YY)02/20/25⬆ 返回目录三、获取时间各部分API作用返回值示例.year()获取年份2025.month()获取月份1注意01月1112月.date()获取日期几号20.day()获取星期几40周日6周六.hour()获取小时14.minute()获取分钟30.second()获取秒45.millisecond()获取毫秒123.unix()获取秒级时间戳1708416045.valueOf()获取毫秒级时间戳1708416045123⬆ 返回目录四、设置时间修改某一项API作用示例.year(年份)设置年份dayjs().year(2026).month(月份)设置月份dayjs().month(5)6月0起算.date(日期)设置几号dayjs().date(15).hour(小时)设置小时dayjs().hour(12).minute(分钟)设置分钟dayjs().minute(0).second(秒)设置秒dayjs().second(0)⬆ 返回目录五、增减时间加减几天、几月等API作用示例.add(数量, 单位)加时间dayjs().add(3, day)加 3 天.subtract(数量, 单位)减时间dayjs().subtract(1, month)减 1 个月常用单位单位含义year/y年month/M月week/w周day/d天hour/h小时minute/m分钟second/s秒示例dayjs().add(7,day)// 7天后dayjs().subtract(1,year)// 1年前dayjs().add(2,hour).add(30,minute)// 可链式调用⬆ 返回目录六、获取时间段的开始/结束API作用示例.startOf(单位)取该单位起始时间dayjs().startOf(month)→ 本月 1 号 00:00:00.endOf(单位)取该单位结束时间dayjs().endOf(month)→ 本月最后一天 23:59:59.999常用单位yearmonthweekdayhourminute⬆ 返回目录七、日期比较API作用返回值.isBefore(其他日期)是否在某日期之前true/false.isAfter(其他日期)是否在某日期之后true/false.isSame(其他日期)是否相同true/false.isSame(其他日期, 单位)是否在某一单位内相同如.isSame(other, day)是否同一天.isBetween(开始, 结束)是否在区间内true/false示例dayjs(2025-02-20).isBefore(2025-02-21)// truedayjs(2025-02-20).isAfter(2025-02-19)// truedayjs(2025-02-20 14:00).isSame(dayjs(2025-02-20 15:00),day)// true同一天⬆ 返回目录八、计算时间差API作用示例.diff(其他日期, 单位)计算时间差dayjs(2025-03-01).diff(dayjs(2025-02-20), day)→ 9常用单位yearmonthweekdayhourminutesecond⬆ 返回目录九、其他常用方法API作用.toDate()转成原生 JavaScriptDate对象.clone()克隆一份避免修改原对象.isValid()检查日期是否合法⬆ 返回目录十、小白入门示例// 1. 获取今天consttodaydayjs();// 2. 格式化显示today.format(YYYY年MM月DD日 HH:mm);// 2025年02月20日 14:30// 3. 获取3天后的日期constafter3Daysdayjs().add(3,day);// 4. 判断是否过期constexpireddayjs(2025-01-01).isBefore(dayjs());// 5. 获取本月第一天constfirstDaydayjs().startOf(month);提示dayjs 是不可变的每次操作都会返回新对象不会修改原日期可放心链式调用。⬆ 返回目录学习本就是一场持久战不需要急着一口吃成胖子。哪怕今天你只记住了一点点这都是实打实的进步。后续我还会继续用这种大白话、讲实战方式带大家扫盲更多前端基础。关注我不迷路咱们把那些曾经模糊的知识点一个个彻底搞清楚。如果你觉得这篇内容对你有帮助不妨点赞收藏下次写代码卡壳时拿出来翻一翻比搜引擎更靠谱。我是 Eugene你的电子学友我们下一篇干货见