工具箱图标
XTools
Blog
/
Day.js 在线调试与格式速查Moment.js 在线调试与 Day.js 迁移日期计算与时间戳转换时区转换

© 2026 XTools. 保留所有权利.

隐私政策联系我们

    Moment.js 在线调试与 Day.js 迁移

    实时试用 Moment.js 格式化,并对照 Day.js 的等价写法
    • 文件不会离开你的设备
    • 在浏览器本地运行
    • 免费、免注册、无水印

    Moment.js 已进入维护模式,官方团队也建议新项目改用更现代的库。Day.js 的 API 与它几乎一致,体积只有约 2 KB,所以这里的每个部分都同时给出 Day.js 的等价写法。

    Moment 项目状态说明打开 Day.js 演练场

    正在加载 Moment.js…

    格式化演练

    输出
     

    格式符速查

    点击格式符即可插入到格式字符串中。示例使用上方的参考日期和语言区域。

    格式符示例含义
    年与季度
    四位年份
    两位年份
    季度(1–4)
    季度(序数)
    月
    月(1–12)
    月(序数)
    月(两位)
    月份简称
    月份全称
    日(月内 / 年内)
    日
    日(序数)
    日(两位)
    一年中的第几天
    一年中的第几天(三位)
    星期
    星期几(0 为周日)
    星期(最短)
    星期(简称)
    星期(全称)
    星期几(按语言区域)
    ISO 星期几(1 为周一)
    周
    一年中的第几周(按语言区域)
    第几周(序数)
    第几周(两位)
    ISO 周数
    ISO 周数(两位)
    周所属年份(按语言区域)
    ISO 周所属年份
    小时
    小时,0–23
    小时,00–23
    小时,1–12
    小时,01–12
    小时,1–24
    小时,01–24
    分与秒
    分钟
    分钟(两位)
    秒
    秒(两位)
    十分之一秒
    百分之一秒
    毫秒
    上午 / 下午
    AM / PM(上午 / 下午)
    am / pm(小写)
    时区
    UTC 偏移,±HH:mm
    UTC 偏移,±HHmm
    需要 moment-timezone时区缩写
    需要 moment-timezone时区名称
    Unix 时间
    Unix 秒
    Unix 毫秒
    本地化格式
    本地化时间
    本地化时间(含秒)
    本地化数字日期
    本地化日期(含月份名)
    本地化日期和时间
    本地化日期、星期和时间
    简短数字日期
    简短日期(含月份名)
    简短日期和时间
    简短日期、星期和时间
    转义
    方括号中的文字原样输出

    解析演练

    留空则按 ISO 8601 解析。

    相对时间

    每一行先把参考日期平移,再用 from() 和 calendar() 描述它相对参考日期的位置。

    平移from(ref)calendar(ref)
    .add(-45, 'second')
    .add(-10, 'minute')
    .add(-3, 'hour')
    .add(-1, 'day')
    .add(-5, 'day')
    .add(-3, 'month')
    .add(-2, 'year')
    .add(30, 'minute')
    .add(2, 'day')
    .add(1, 'month')

    时长

    常用写法

    日常任务的写法和实时结果。点击“试一试”可载入到下方的代码运行器。

    Moment 对象是可变的:add() 会修改原对象。Day.js 的每次操作都返回新对象,所以要把结果重新赋值。
    任务Moment.js
    格式化当前时间
    moment().format('YYYY-MM-DD HH:mm:ss')
    →
    加上若干天
    moment('2023-01-01').add(1, 'days').format('YYYY-MM-DD')
    →
    距现在多久
    moment().subtract(7, 'days').fromNow()
    →
    本月第一天
    moment().startOf('month').format('YYYY-MM-DD')
    →
    今年最后一天
    moment().endOf('year').format('YYYY-MM-DD')
    →
    本周开始(随语言区域)
    moment().startOf('week').format('YYYY-MM-DD ddd')
    →
    两个日期相差的天数
    moment().diff(moment('2022-01-01'), 'days')
    →
    本月天数
    moment().daysInMonth()
    →
    所在季度
    moment().quarter()
    →
    日历式时间
    moment().add(1, 'days').calendar()
    →
    是否在两个日期之间
    moment('2024-12-31').isBetween('2024-01-01', '2025-01-01')
    →
    是否为今天
    moment().isSame(moment(), 'day')
    →
    是否为闰年
    moment('2024-01-01').isLeapYear()
    →
    严格校验日期
    moment('2023-02-30', 'YYYY-MM-DD', true).isValid()
    →
    解析自定义格式
    moment('13/10/2026 14:30', 'DD/MM/YYYY HH:mm').format()
    →
    Unix 时间戳(秒)
    moment().unix()
    →
    当前 UTC 时间
    moment.utc().format()
    →
    其他时区的时间
    需要 moment-timezone
    把时长转成自然语言
    moment.duration(90, 'minutes').humanize()
    →
    月末加一个月
    moment('2026-01-31').add(1, 'months').format('YYYY-MM-DD')
    →
    调用 add() 但不重新赋值
    (() => { const d = moment('2026-01-01'); d.add(1, 'days'); return d.format('YYYY-MM-DD') })()
    →

    代码运行器

    输入一个使用 moment 的表达式,直接在浏览器中运行;常用写法里用到的插件都已启用,并使用上方选择的语言区域。

    结果

    演练设置

    相关工具

    • Day.js 在线调试与格式速查
    • 日期计算与时间戳转换
    • 时区转换

    如何使用Moment.js 在线调试与 Day.js 迁移

    在线调试 Moment.js 的格式化、解析、相对时间和时长,每个 Moment 结果旁边都同时给出 Day.js 的结果,并标出不一致的地方,方便在迁移代码前确认会有哪些变化。两个库都在浏览器中运行。

    1. 1

      设置「参考日期和时间」和「语言区域」;代码里用的是 moment.utc() 就打开「按 UTC 处理」。

    2. 2

      在「格式字符串」里输入格式,「输出」会显示 Moment 的结果以及 Day.js 的结果,并标注「输出一致」或「输出不同」。

    3. 3

      在「格式符速查」里查看 Day.js 不支持或需要插件的格式符,点击格式符可插入到格式里。

    4. 4

      在「解析演练」「相对时间」「时长」中对比两个库,Day.js 结果不同的地方会高亮显示。

    5. 5

      在「常用写法」里查看日常任务的两种写法,点「试一试」在「代码运行器」中运行 Moment 版本。

    常见问题

    Moment.js 还在维护吗?

    Moment.js 已进入维护模式,官方团队也建议新项目改用更现代的库。页面顶部的提示里有 Moment 项目状态说明和 Day.js 演练场的链接。

    迁移到 Day.js 最容易出什么问题?

    最常见的是可变性:Moment 的 add() 会修改原对象,而 Day.js 每次都返回新对象,必须把结果重新赋值。另外很多功能在 Day.js 里需要插件,每条常用写法都列出了所需插件。

    哪些格式符在 Day.js 里没有对应?

    Qo、Mo、DDD、DDDD、e、E、S 和 SS。「格式符速查」会把它们标为 Day.js 不支持,其余格式符则标出需要的插件。

    为什么 z 和 zzz 在 Moment 里没有效果?

    时区名称需要单独的 moment-timezone 扩展,本页没有加载它,所以速查表显示“需要 moment-timezone”。Day.js 则通过 timezone 插件支持。

    对比的是哪个版本?

    Moment.js 和 Day.js 的具体版本号显示在设置面板下方。

    代码会上传到服务器吗?

    不会。两个库和语言包都加载到当前页面中,你输入的内容都在浏览器里执行。