XTools Logo
XTools
Blog
/
Day.js Playground & Format ReferenceMoment.js Playground & Day.js MigrationDate Calculator & Unix TimestampTime Zone Converter

© 2026 XTools. All rights reserved.

Privacy PolicyContact Us

    Moment.js Playground & Day.js Migration

    Try Moment.js formats live and see the Day.js equivalent side by side
    • Files never leave your device
    • Runs in your browser
    • Free, no sign-up, no watermark

    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

    Playground settings

    Related tools

    • Day.js Playground & Format Reference
    • Date Calculator & Unix Timestamp
    • Time Zone Converter

    How to use Moment.js Playground & Day.js Migration

    Test Moment.js formatting, parsing, relative time and durations, with the Day.js result shown next to every Moment result. Differences are flagged, so you can see what would change before migrating a codebase. Both libraries run in your browser.

    1. 1

      Set the Reference date and time and a Locale, and turn on Treat as UTC if your code uses moment.utc().

    2. 2

      Type a pattern into Format string; the Output shows Moment’s result and what Day.js gives, marked Same output or Different output.

    3. 3

      Check the Format tokens table for tokens that Day.js lacks or needs a plugin for, and click a token to insert it.

    4. 4

      Compare the two libraries in Parse playground, Relative time and Durations, where Day.js values that differ are highlighted.

    5. 5

      Use Recipes for side-by-side code of everyday tasks, and click Try to run the Moment version in the Code runner.

    Frequently asked questions

    Is Moment.js still maintained?

    Moment.js is in maintenance mode, and its own team recommends a modern library for new projects. The note at the top links to the Moment project status page and to the Day.js playground.

    What usually breaks when switching to Day.js?

    Mutability: Moment’s add() changes the original object, while Day.js returns a new one, so results must be reassigned. Many features also need Day.js plugins, which each recipe lists.

    Which format tokens have no Day.js equivalent?

    Qo, Mo, DDD, DDDD, e, E, S and SS. The Format tokens table marks them as not in Day.js and names the plugin needed for the others.

    Why don’t the z and zzz tokens work in Moment?

    Time zone names need the separate moment-timezone add-on, which this page doesn’t load, so the table shows needs moment-timezone. Day.js provides them through its timezone plugin.

    Which versions are compared?

    The exact Moment.js and Day.js versions are shown under the settings panel.

    Is my code sent to a server?

    No. Both libraries and their locale files load into this page, and everything you type is evaluated in your browser.