تقریباً در هر پروژه واقعی به تاریخ و زمان نیاز پیدا میکنید؛ از نمایش تاریخ ثبت سفارش و زمان انتشار مقاله گرفته تا محاسبه روزهای باقیمانده تا پایان اشتراک. آبجکت Date در جاوااسکریپت تمام ابزارهای لازم برای ساخت، خواندن و دستکاری تاریخ را در اختیار شما قرار میدهد و در این مقاله بهصورت کامل با آن کار میکنیم.
ساخت آبجکت تاریخ
سادهترین راه، ساخت تاریخِ همین لحظه است. همچنین میتوانید تاریخ دلخواه بسازید؛ فقط به این نکته مهم توجه کنید که شماره ماهها در جاوااسکریپت از صفر شروع میشود، یعنی ژانویه ماه صفر است:
const now = new Date(); // تاریخ و ساعت همین لحظه
console.log(now);
// توجه: ماه دوم یعنی مارس، چون شمارش از صفر است
const custom = new Date(2026, 2, 20, 14, 30);
console.log(custom);
خواندن اجزای تاریخ
با متدهای getter میتوان سال، ماه، روز، ساعت و دقیقه را جداگانه استخراج کرد. برای نمایش ماه به شکل صحیح برای کاربر، حتماً یک واحد به آن اضافه کنید:
const now = new Date();
console.log(now.getFullYear()); // سال مثل 2026
console.log(now.getMonth()); // 0 تا 11 و نیاز به +1 دارد
console.log(now.getDate()); // روز ماه
console.log(now.getDay()); // روز هفته از 0 یعنی یکشنبه
console.log(now.getHours()); // ساعت
console.log(now.getMinutes()); // دقیقه
Timestamps و محاسبات زمانی
هر تاریخ در پسزمینه یک عدد است؛ تعداد میلیثانیههای گذشته از اول ژانویه ۱۹۷۰. با کم و زیاد کردن این اعداد میتوان اختلاف بین دو تاریخ را محاسبه کرد:
const start = new Date(2026, 0, 1);
const end = new Date(2026, 0, 20);
const diffMs = end - start;
const diffDays = diffMs / (1000 * 60 * 60 * 24);
console.log(`${diffDays} روز اختلاف`);
محصول اورجینال INZIP
دانلود پوسته وردپرس باریستا؛ قالب کافیشاپ، رُستری قهوه و فروشگاه قهوه دوزبانه با منوی رومیزی، رزرو آنلاین میز با کد پیامکی و ووکامرس. طراحی اختصاصی inzip.ir
تحویل آنی
آپدیت رایگان
بدون قفل لایسنس
پشتیبانی واقعی
٪۲۶
تخفیف ویژه
۱,۰۳۰,۰۰۰ تومان
تغییر تاریخ با Setterها
مانند متدهای getter، متدهای setter هم وجود دارند که اجزای تاریخ را تغییر میدهند. جالب این جاست که اگر عددی خارج از بازه بدهید، جاوااسکریپت خودش تاریخ را اصلاح میکند:
const date = new Date(2026, 0, 1);
date.setDate(date.getDate() + 10); // ده روز بعد
console.log(date);
date.setFullYear(2027); // تغییر سال
console.log(date.getFullYear());
تبدیل تاریخ به رشته خوانا
متدهایی مانند toLocaleDateString تاریخ را بر اساس تنظیمات محلی کاربر به متن خوانا تبدیل میکنند. برای نمایش تاریخ شمسی کافی است fa-IR را به عنوان locale بدهید؛ قابلیتی بسیار کاربردی برای سایتهای فارسی:
const now = new Date();
console.log(now.toLocaleDateString("fa-IR"));
// خروجی مانند 1404/11/25
console.log(now.toLocaleTimeString("fa-IR"));
const options = { year: "numeric", month: "long", day: "numeric" };
console.log(now.toLocaleDateString("fa-IR", options));
// خروجی مانند 25 بهمن 1404
مقایسه دو تاریخ
از آن جایی که تاریخها در مقایسه به مقدار عددی خود تبدیل میشوند، میتوانیم مستقیماً آنها را با عملگرهای مقایسهای بسنجیم؛ مثلاً برای بررسی منقضی شدن یک کد تخفیف:
const expireDate = new Date(2026, 5, 1);
const today = new Date();
if (today > expireDate) {
console.log("کد تخفیف منقضی شده است");
} else {
console.log("کد تخفیف هنوز معتبر است");
}
مثال کاربردی: شمارش روزهای باقیمانده
بیایید با ترکیب همه چیزهایی که آموختیم، تابعی بنویسیم که تعداد روزهای مانده تا یک رویداد را حساب کند:
function daysUntil(targetYear, targetMonth, targetDay) {
const target = new Date(targetYear, targetMonth - 1, targetDay);
const today = new Date();
const diff = target - today;
return Math.ceil(diff / (1000 * 60 * 60 * 24));
}
console.log(`${daysUntil(2026, 6, 15)} روز تا رویداد مانده`);
جمعبندی
آبجکت Date ابزار کاملی برای کار با تاریخ در جاوااسکریپت است؛ فقط باید به نکات ظریف آن مانند شروع ماهها از صفر و واحد میلیثانیه دقت کنید. برای نمایش تاریخ به کاربران ایرانی، متد toLocaleDateString با تنظیم fa-IR بهترین و سریعترین راه است و در مقاله آموزش Intl بهصورت عمیقتری به این موضوع میپردازیم.