Moment.js 已進入維護模式,官方團隊也建議新專案改用更現代的函式庫。Day.js 的 API 與它幾乎相同,大小只有約 2 KB,因此這裡每個區塊都同時列出 Day.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.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 的運算式,直接在瀏覽器中執行;常用寫法用到的外掛都已啟用,並套用上方選擇的地區語言。
線上測試 Moment.js 的格式化、解析、相對時間與時間長度,每個 Moment 結果旁都同時列出 Day.js 的結果並標示差異,方便在遷移程式碼前確認會有哪些變化。兩個函式庫都在瀏覽器中執行。
設定「參考日期與時間」和「地區語言」;程式碼使用 moment.utc() 的話,請開啟「以 UTC 處理」。
在「格式字串」輸入格式,「輸出」會顯示 Moment 與 Day.js 的結果,並標示「輸出一致」或「輸出不同」。
在「格式符號速查」查看 Day.js 不支援或需要外掛的符號,點一下符號即可插入格式中。
在「解析練習」「相對時間」「時間長度」對照兩個函式庫,Day.js 結果不同之處會以醒目顏色標示。
在「常用寫法」查看日常任務的兩種寫法,點「試試看」在「程式碼執行器」執行 Moment 版本。
Moment.js 已進入維護模式,官方團隊也建議新專案改用更現代的函式庫。頁面上方的提示附有 Moment 專案狀態說明與 Day.js 練習場的連結。
最常見的是可變性:Moment 的 add() 會修改原物件,Day.js 則每次都回傳新物件,必須重新指定結果。此外許多功能在 Day.js 需要外掛,每條常用寫法都列出了所需外掛。
Qo、Mo、DDD、DDDD、e、E、S 和 SS。「格式符號速查」會標示它們為 Day.js 不支援,其他符號則標出需要的外掛。
時區名稱需要另外的 moment-timezone 擴充套件,本頁沒有載入,所以速查表會顯示「需要 moment-timezone」。Day.js 則透過 timezone 外掛支援。
Moment.js 與 Day.js 的實際版本號顯示在設定面板下方。
不會。兩個函式庫與語系檔都載入到目前的頁面中,你輸入的內容都在瀏覽器裡執行。