Песочница Moment.js и переход на Day.js
- Файлы не покидают устройство
- Работает в браузере
- Бесплатно, без регистрации и водяных знаков
Moment.js is in maintenance mode, and its own team recommends a modern library for new projects. Day.js keeps nearly the same API in about 2 KB, so every section here also shows the Day.js equivalent.
Format playground
Format tokens
Click a token to insert it into the format string. Examples use the reference date and locale.
| Token | Example | Meaning | |
|---|---|---|---|
| Year and quarter | |||
| Four-digit year | |||
| Two-digit year | |||
| Quarter (1–4) | |||
| Quarter, ordinal | |||
| Month | |||
| Month (1–12) | |||
| Month, ordinal | |||
| Month, two digits | |||
| Month, short name | |||
| Month, full name | |||
| Day of month and year | |||
| Day of month | |||
| Day of month, ordinal | |||
| Day of month, two digits | |||
| Day of year | |||
| Day of year, three digits | |||
| Day of week | |||
| Day of week (0 = Sunday) | |||
| Weekday, shortest name | |||
| Weekday, short name | |||
| Weekday, full name | |||
| Day of week, by locale | |||
| ISO day of week (1 = Monday) | |||
| Week | |||
| Week of year, by locale | |||
| Week of year, ordinal | |||
| Week of year, two digits | |||
| ISO week of year | |||
| ISO week, two digits | |||
| Week-numbering year, by locale | |||
| ISO week-numbering year | |||
| Hour | |||
| Hour, 0–23 | |||
| Hour, 00–23 | |||
| Hour, 1–12 | |||
| Hour, 01–12 | |||
| Hour, 1–24 | |||
| Hour, 01–24 | |||
| Minute and second | |||
| Minute | |||
| Minute, two digits | |||
| Second | |||
| Second, two digits | |||
| Tenths of a second | |||
| Hundredths of a second | |||
| Milliseconds | |||
| AM / PM | |||
| AM / PM | |||
| am / pm | |||
| Time zone | |||
| UTC offset, ±HH:mm | |||
| UTC offset, ±HHmm | |||
| needs moment-timezone | Time zone abbreviation | ||
| needs moment-timezone | Time zone name | ||
| Unix time | |||
| Unix seconds | |||
| Unix milliseconds | |||
| Localized formats | |||
| Localized time | |||
| Localized time with seconds | |||
| Localized numeric date | |||
| Localized date with month name | |||
| Localized date and time | |||
| Localized date and time with weekday | |||
| Short numeric date | |||
| Short date with month name | |||
| Short date and time | |||
| Short date and time with weekday | |||
| Escaping | |||
| Text in square brackets is printed as is | |||
Parse playground
Leave empty to parse ISO 8601.
Relative time
Each row shifts the reference date, then describes it relative to the reference with from() and calendar().
| Shift | 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') |
Durations
Recipes
Everyday tasks with live results. “Try” loads one into the code runner below.
| Task | Moment.js |
|---|---|
Format the current time | moment().format('YYYY-MM-DD HH:mm:ss')→ |
Add days | moment('2023-01-01').add(1, 'days').format('YYYY-MM-DD')→ |
Time from now | moment().subtract(7, 'days').fromNow()→ |
First day of this month | moment().startOf('month').format('YYYY-MM-DD')→ |
Last day of this year | moment().endOf('year').format('YYYY-MM-DD')→ |
Start of this week (locale aware) | moment().startOf('week').format('YYYY-MM-DD ddd')→ |
Days between two dates | moment().diff(moment('2022-01-01'), 'days')→ |
Days in this month | moment().daysInMonth()→ |
Quarter of the year | moment().quarter()→ |
Calendar time | moment().add(1, 'days').calendar()→ |
Is a date between two others | moment('2024-12-31').isBetween('2024-01-01', '2025-01-01')→ |
Is it today | moment().isSame(moment(), 'day')→ |
Is it a leap year | moment('2024-01-01').isLeapYear()→ |
Validate a date strictly | moment('2023-02-30', 'YYYY-MM-DD', true).isValid()→ |
Parse a custom format | moment('13/10/2026 14:30', 'DD/MM/YYYY HH:mm').format()→ |
Unix timestamp in seconds | moment().unix()→ |
Current time in UTC | moment.utc().format()→ |
Time in another time zone | needs moment-timezone |
Humanize a duration | moment.duration(90, 'minutes').humanize()→ |
Add a month at the end of a month | moment('2026-01-31').add(1, 'months').format('YYYY-MM-DD')→ |
Call add() without reassigning | (() => { const d = moment('2026-01-01'); d.add(1, 'days'); return d.format('YYYY-MM-DD') })()→ |
Code runner
Type an expression that uses moment. It runs right here in your browser, with every plugin from the recipes enabled and the locale above.
Как пользоваться: Песочница Moment.js и переход на Day.js
Проверьте форматирование, разбор, относительное время и длительности Moment.js: результат Day.js показан рядом с каждым результатом Moment. Отличия помечены, чтобы увидеть, что изменится до переноса кодовой базы. Обе библиотеки работают в браузере.
- 1
Задайте опорную дату и время и локаль и включите «Считать как UTC», если код использует moment.utc().
- 2
Введите шаблон в «Строку формата»; вывод показывает результат Moment и то, что даёт Day.js, с пометкой «Тот же вывод» или «Другой вывод».
- 3
Проверьте таблицу токенов формата на токены, которых у Day.js нет или для которых нужен плагин, и нажмите токен, чтобы вставить его.
- 4
Сравните две библиотеки в песочнице разбора, относительном времени и длительностях: отличающиеся значения Day.js подсвечены.
- 5
Используйте рецепты для кода повседневных задач рядом и нажмите «Попробовать», чтобы выполнить версию Moment в исполнителе кода.
Частые вопросы
Moment.js ещё поддерживается?
Moment.js в режиме сопровождения, и его команда рекомендует современную библиотеку для новых проектов. Примечание сверху ведёт на страницу статуса проекта Moment и на песочницу Day.js.
Что обычно ломается при переходе на Day.js?
Изменяемость: add() у Moment меняет исходный объект, а 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 показаны под панелью настроек.
Отправляется ли мой код на сервер?
Нет. Обе библиотеки и их файлы локалей загружаются на эту страницу, и всё введённое вычисляется в браузере.
