ملعب Moment.js والانتقال إلى Day.js

جرّب تنسيقات 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.

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

كيفية استخدام ملعب Moment.js والانتقال إلى Day.js

اختبر تنسيق Moment.js وتحليله والوقت النسبي والمدد، مع عرض نتيجة Day.js بجانب كل نتيجة Moment. تُعلَّم الاختلافات، فترى ما سيتغيّر قبل نقل قاعدة الشفرة. تعمل المكتبتان في متصفحك.

  1. 1

    اضبط «التاريخ والوقت المرجعي» و«منطقة»، وفعّل «التعامل كـ UTC» إذا كانت شفرتك تستخدم moment.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؟

قابلية التغيير: تغيّر add() في Moment الكائن الأصلي، بينما يعيد Day.js كائنًا جديدًا، فيجب إعادة إسناد النتائج. وتحتاج ميزات كثيرة أيضًا إلى إضافات Day.js، وتسردها كل وصفة.

ما رموز التنسيق التي بلا مقابل في Day.js؟

Qo وMo وDDD وDDDD وe وE وS وSS. يعلّمها جدول «رموز التنسيق» بأنها ليست في Day.js ويسمّي الإضافة اللازمة للبقية.

لماذا لا يعمل الرمزان z وzzz في Moment؟

تحتاج أسماء المناطق الزمنية إلى الإضافة المنفصلة moment-timezone، وهذه الصفحة لا تحمّلها، فيعرض الجدول needs moment-timezone. يوفرها Day.js عبر إضافة timezone.

ما الإصدارات التي تُقارَن؟

تظهر إصدارات Moment.js وDay.js الدقيقة ضمن لوحة الإعدادات.

هل تُرسل شفرتي إلى خادم؟

لا. تُحمَّل المكتبتان وملفات مناطقيهما في هذه الصفحة، ويُقيَّم كل ما تكتبه في متصفحك.