JavaScript Temporal
JavaScript Temporal چیست؟
Temporal یک API جدید برای کار با تاریخ و زمان در جاوااسکریپت است که به عنوان جایگزین مدرن برای شیء قدیمی Date معرفی شده است. این قابلیت در نسخههای جدید استاندارد ECMAScript اضافه شده تا مشکلات معروف Date (مانند مدیریت تایمزون و تبدیلهای پیچیده) را حل کند.
چرا Temporal ایجاد شد؟
شیء قدیمی Date مشکلاتی دارد مثل:
-
مدیریت ضعیف تایمزونها
-
خطاهای مربوط به تبدیل UTC و Local
-
تغییر ناخواسته مقدار (Mutable بودن)
-
API پیچیده و گاهی گیجکننده
Temporal این مشکلات را با طراحی جدید و دقیقتر برطرف میکند.
مهمترین بخشهای Temporal
Temporal شامل چندین کلاس مهم است:
1️⃣ Temporal.Now
برای گرفتن تاریخ و زمان فعلی:
Temporal.Now.instant(); // زمان دقیق (UTC)
Temporal.Now.plainDateISO(); // تاریخ امروز
Temporal.Now.zonedDateTimeISO(); // تاریخ و زمان با تایمزون
2️⃣ Temporal.PlainDate
فقط تاریخ (بدون ساعت و تایمزون):
const date = new Temporal.PlainDate(2026, 2, 17);
یا:
const date = Temporal.PlainDate.from(“2026-02-17”);
3️⃣ Temporal.PlainTime
فقط ساعت:
const time = new Temporal.PlainTime(14, 30, 0);
4️⃣ Temporal.PlainDateTime
ترکیب تاریخ و ساعت (بدون تایمزون):
5️⃣ Temporal.ZonedDateTime
تاریخ + ساعت + تایمزون:
const zoned = Temporal.ZonedDateTime.from(
“2026-02-17T14:30:00+04:00[Asia/Baku]”
);
6️⃣ Temporal.Duration
برای فاصله زمانی:
const duration = Temporal.Duration.from({ hours: 5, minutes: 30 });
مزایای Temporal
✅ Immutable (غیرقابل تغییر)
✅ مدیریت دقیق تایمزون
✅ خواناتر و سادهتر
✅ پشتیبانی بهتر از استاندارد ISO
✅ مناسب برای پروژههای حرفهای
مثال مقایسه با Date قدیمی
❌ با Date:
new Date(“2026-02-17”);
(ممکن است بسته به مرورگر یا تایمزون متفاوت تفسیر شود)
✅ با Temporal:
Temporal.PlainDate.from(“2026-02-17”);
کاملاً دقیق و بدون ابهام.
آیا در همه مرورگرها فعال است؟
Temporal در مرورگرهای جدید و Node.js جدید در حال اضافه شدن است. اگر هنوز پشتیبانی نشود، میتوانید از polyfill رسمی استفاده کنید:
npm install @js-temporal/polyfill
جمعبندی
Temporal نسل جدید مدیریت تاریخ و زمان در JavaScript است که:
-
مشکلات قدیمی Date را حل میکند
-
کدنویسی را سادهتر میکند
-
برای پروژههای مدرن و حرفهای توصیه میشود
دیدگاهتان را بنویسید