JavaScript Temporal vs Date
JavaScript Temporal vs Date
در جاوااسکریپت قدیمی، مدیریت تاریخ و زمان با شیء Date انجام میشود. اما به دلیل مشکلات زیاد آن، استاندارد جدیدی به نام Temporal معرفی شده که دقیقتر، امنتر و مدرنتر است.
1️⃣ Date (شیء قدیمی)
Date از سال 1995 در جاوااسکریپت وجود دارد.
مزایا
-
ساده و در همه مرورگرها پشتیبانی میشود
-
برای کارهای ساده مناسب است
معایب
-
مدیریت ضعیف Time Zone
-
رفتارهای گیجکننده در پارس تاریخ
-
تغییرپذیر (Mutable)
-
ماهها از 0 شروع میشوند!
-
مشکلات مربوط به DST
مثال:
const now = new Date();
console.log(now);
const birthday = new Date(2026, 1, 20); // ماه 1 یعنی فوریه!
2️⃣ Temporal (نسل جدید تاریخ در JS)
Temporal جایگزین مدرن Date است و در استاندارد ECMAScript اضافه شده (در حال گسترش در موتورهای JS).
مزایا
-
Immutable (تغییرناپذیر)
-
مدیریت قوی Time Zone
-
API واضحتر
-
پشتیبانی از انواع مختلف تاریخ:
-
Temporal.PlainDate -
Temporal.PlainTime -
Temporal.PlainDateTime -
Temporal.ZonedDateTime -
Temporal.Instant
-
مثال:
const today = Temporal.Now.plainDateISO();
console.log(today);
const birthday = Temporal.PlainDate.from(“2026-02-20”);
مقایسه مستقیم
| ویژگی | Date | Temporal |
|---|---|---|
| تغییرپذیری | ✅ Mutable | ❌ Immutable |
| Time Zone | ضعیف | بسیار قوی |
| خوانایی API | متوسط | بسیار واضح |
| پارس تاریخ | گیجکننده | استاندارد و دقیق |
| پشتیبانی فعلی | کامل | در حال گسترش |
تفاوت مهم در Time Zone
با Date:
ممکن است بسته به سیستم، به صورت UTC یا Local تفسیر شود.
با Temporal:
کاملاً مشخص و بدون ابهام.
چه زمانی از کدام استفاده کنیم؟
✅ پروژه قدیمی → Date
✅ پروژه مدرن و حرفهای → Temporal
✅ کار با Time Zone های مختلف → قطعاً Temporal
نتیجه نهایی
Date قدیمی، پر از باگهای تاریخی و محدود است.Temporal مدرن، دقیق و مناسب برنامههای حرفهای و بینالمللی است.
دیدگاهتان را بنویسید