Bac à sable Moment.js et migration vers Day.js

Essayer les formats Moment.js en direct et voir l'équivalent Day.js côte à côte
  • Les fichiers ne quittent pas votre appareil
  • S’exécute dans le navigateur
  • Gratuit, sans compte, sans filigrane

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.

Moment project statusOpen the Day.js playground

Loading Moment.js…

Format playground

Output
 

Format tokens

Click a token to insert it into the format string. Examples use the reference date and locale.

TokenExampleMeaning
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-timezoneTime zone abbreviation
needs moment-timezoneTime 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().

Shiftfrom(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.

Moment objects are mutable: add() changes the original. Day.js returns a new object from every operation, so reassign the result.
TaskMoment.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.

Result

Comment utiliser Bac à sable Moment.js et migration vers Day.js

Testez le formatage, l'analyse, le temps relatif et les durées de Moment.js, avec le résultat Day.js affiché à côté de chaque résultat Moment. Les différences sont signalées, afin de voir ce qui changerait avant de migrer une base de code. Les deux bibliothèques s'exécutent dans votre navigateur.

  1. 1

    Réglez la Date et l'heure de référence et une Locale, et activez Traiter comme UTC si votre code utilise moment.utc().

  2. 2

    Saisissez un motif dans Chaîne de format ; la Sortie montre le résultat de Moment et ce que donne Day.js, marqué Même sortie ou Sortie différente.

  3. 3

    Consultez le tableau Jetons de format pour les jetons que Day.js n'a pas ou qui exigent un plugin, et cliquez sur un jeton pour l'insérer.

  4. 4

    Comparez les deux bibliothèques dans le Bac à sable d'analyse, le Temps relatif et les Durées, où les valeurs Day.js qui diffèrent sont mises en évidence.

  5. 5

    Utilisez les Recettes pour du code côte à côte des tâches courantes, et cliquez sur Essayer pour exécuter la version Moment dans l'Exécuteur de code.

Questions fréquentes

Moment.js est-il encore maintenu ?

Moment.js est en mode maintenance, et sa propre équipe recommande une bibliothèque moderne pour les nouveaux projets. La note en haut renvoie vers la page d'état du projet Moment et vers le bac à sable Day.js.

Qu'est-ce qui casse en général lors du passage à Day.js ?

La mutabilité : add() de Moment modifie l'objet d'origine, tandis que Day.js en renvoie un nouveau, les résultats doivent donc être réassignés. De nombreuses fonctions exigent aussi des plugins Day.js, que chaque recette liste.

Quels jetons de format n'ont pas d'équivalent Day.js ?

Qo, Mo, DDD, DDDD, e, E, S et SS. Le tableau Jetons de format les marque comme absents de Day.js et nomme le plugin nécessaire pour les autres.

Pourquoi les jetons z et zzz ne fonctionnent-ils pas dans Moment ?

Les noms de fuseaux horaires exigent le module séparé moment-timezone, que cette page ne charge pas, le tableau indique donc needs moment-timezone. Day.js les fournit via son plugin timezone.

Quelles versions sont comparées ?

Les versions exactes de Moment.js et de Day.js sont indiquées sous le panneau de réglages.

Mon code est-il envoyé à un serveur ?

Non. Les deux bibliothèques et leurs fichiers de locale se chargent dans cette page, et tout ce que vous saisissez est évalué dans votre navigateur.