同学们好,我是 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 |
二、格式化输出(转成字符串)
| 格式符 | 含义 | 示例输出 |
|---|---|---|
YYYY | 4位年份 | 2025 |
YY | 2位年份 | 25 |
MM | 2位月份(01-12) | 02 |
M | 月份(1-12) | 2 |
DD | 2位日期(01-31) | 20 |
D | 日期(1-31) | 20 |
HH | 24小时制小时(00-23) | 14 |
hh | 12小时制小时 | 02 |
mm | 分钟(00-59) | 30 |
ss | 秒(00-59) | 45 |
A | 上午/下午 | 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(注意:0=1月,11=12月) |
.date() | 获取日期(几号) | 20 |
.day() | 获取星期几 | 4(0=周日,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 |
常用单位: 'year' 'month' 'week' 'day' 'hour' 'minute'
七、日期比较
| 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') // true
dayjs('2025-02-20').isAfter('2025-02-19') // true
dayjs('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 |
常用单位: 'year' 'month' 'week' 'day' 'hour' 'minute' 'second'
九、其他常用方法
| API | 作用 |
|---|---|
.toDate() | 转成原生 JavaScript Date 对象 |
.clone() | 克隆一份,避免修改原对象 |
.isValid() | 检查日期是否合法 |
十、小白入门示例
// 1. 获取今天
const today = dayjs();
// 2. 格式化显示
today.format('YYYY年MM月DD日 HH:mm'); // "2025年02月20日 14:30"
// 3. 获取3天后的日期
const after3Days = dayjs().add(3, 'day');
// 4. 判断是否过期
const expired = dayjs('2025-01-01').isBefore(dayjs());
// 5. 获取本月第一天
const firstDay = dayjs().startOf('month');
提示: dayjs 是不可变的,每次操作都会返回新对象,不会修改原日期,可放心链式调用。
学习本就是一场持久战,不需要急着一口吃成胖子。哪怕今天你只记住了一点点,这都是实打实的进步。
后续我还会继续用这种大白话、讲实战方式,带大家扫盲更多前端基础。
关注我,不迷路,咱们把那些曾经模糊的知识点,一个个彻底搞清楚。
如果你觉得这篇内容对你有帮助,不妨点赞+收藏,下次写代码卡壳时,拿出来翻一翻,比搜引擎更靠谱。
我是 Eugene,你的电子学友,我们下一篇干货见~