ملعب 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، وهذه الصفحة لا تحمّلها، فيعرض الجدول needs moment-timezone. يوفرها Day.js عبر إضافة timezone.
ما الإصدارات التي تُقارَن؟
تظهر إصدارات Moment.js وDay.js الدقيقة ضمن لوحة الإعدادات.
هل تُرسل شفرتي إلى خادم؟
لا. تُحمَّل المكتبتان وملفات مناطقيهما في هذه الصفحة، ويُقيَّم كل ما تكتبه في متصفحك.
