شیء Date()
شیء Date() در JavaScript به ما اجازه می دهد تاریخ و زمان را مدیریت کنیم.
const date = new Date();
خروجی کد بالا رشته تاریخ زیر است:
همانطور که در نمونه کد بالا دیدید، به طور پیشفرض، JavaScript تاریخ را به صورت رشته کامل نمایش میدهد.
نکته: قالب رشته کامل تاریخ شامل شامل نام روز، نام ماه، روز، سال، ساعت، دقیقه، ثانیه و منطقه زمانی میباشد.
نکته: تابع Date برای محاسبه زمان فعلی، به کمک منطقه زمانی مرورگر، زمان را بر می گرداند.
با سازنده Date و شیء ساخته شده به کمک آن:
- می توانیم زمان فعلی را نمایش دهیم.
- می توانیم محاسبات زمانی (مثلا 30 روز بعد یا یک سال قبل) را انجام دهیم.
- می توانیم تاریخ را در قالب های مختلف به صورت رشته نمایش دهیم.
- می توانیم تاریخ را به صورت رشته های قالب دار دریافت و به شیء تاریخ تبدیل، و روی آن محاسبات انجام دهیم.
- می توانیم تاریخ میلادی را به تاریخ شمسی یا بالکعس تبدیل کنیم.
ایجاد شیء تاریخ در JS
با استفاده از تابع سازنده Date() می توانیم شیء تاریخ ایجاد کنیم.
سازنده Date می تواند پارامتر های زیر را دریافت کند.
new Date(); // بدون پارامتر تاریخ فعلی را بر می گرداند
new Date(date string); // رشته تاریخ
new Date(year,month);
new Date(year,month,day);
new Date(year,month,day,hours);
new Date(year,month,day,hours,minutes);
new Date(year,month,day,hours,minutes,seconds);
new Date(year,month,day,hours,minutes,seconds,ms);
new Date(timestamp); // مهر زمانی
در JS زمان به 3 صورت قابل ارائه است:
- شیء تاریخ ساخته شده از سازنده Date()
- رشته تاریخ در قالب های استاندارد (در بالا قالب رشته کامل را مشاهده کردید)
- مهر زمانی یا timestamp که در JS بر اساس میلی ثانیه محاسبه می شود.
تاریخ و زمان فعلی در JS
برای محاسبه تاریخ فعلی می توان از شیء تاریخ بدون پارامتر (به صورت خالی) استفاده کرد.
const now = new Date();
شیء تاریخ بر اساس رشته تاریخ
می توانیم با استفاده از رشته تاریخ، شیء Date() بسازیم.
const d = new Date("Novamber 07 2024 15:45:00");
const d = new Date("2024-11-07");
نکته: برای مشاهده انواع قالب های رشته تاریخ، به آموزش قالب نمایش تاریخ مراجعه کنید.
شیء تاریخ بر اساس سال، ماه و ...
می توانیم با سال، ماه، روز، ساعت، دقیقه، ثانیه، میلی ثانیه نیز شیء تاریخ ایجاد کنیم.
new Date(year,month);
new Date(year,month,day);
new Date(year,month,day,hours);
new Date(year,month,day,hours,minutes);
new Date(year,month,day,hours,minutes,seconds);
new Date(year,month,day,hours,minutes,seconds,ms);
با استفاده از 2 عدد می توانیم سال و ماه را مشخص کنیم.
در این روش، مقدار ماه از 0 (ژانویه) شروع و تا 11 (دسامبر) می باشد.
const d = new Date(2024, 10);
با استفاده از 3 عدد می توانیم سال و ماه و روز را مشخص کنیم.
const d = new Date(2024, 10, 20);
با استفاده از 4 عدد می توانیم سال و ماه و روز و ساعت را مشخص کنیم.
const d = new Date(2024, 10, 20, 15);
با استفاده از 5 عدد می توانیم سال و ماه و روز و ساعت و دقیقه را مشخص کنیم.
const d = new Date(2024, 10, 20, 15, 30);
با استفاده از 6 عدد می توانیم سال و ماه و روز و ساعت و دقیقه و ثانیه را مشخص کنیم.
const d = new Date(2024, 10, 20, 15, 30, 30);
با استفاده از 7 عدد می توانیم سال و ماه و روز و ساعت و دقیقه و ثانیه و میلی ثانیه را مشخص کنیم.
const d = new Date(2024, 10, 20, 15, 30, 30, 350);
نکته: در جاوا اسکریپت ماه ها از 0 شروع و تا 11 ادامه می یابد. ژانویه = 0. دسامبر = 11
اگر ماه را بیشتر از 11 بزنید خطا نمی دهد ولی سرریز ماه را به سال بعد اضافه می کند.
const d = new Date(2020, 12, 1);
اگر روز را بیشتر از حداکثر بزنید خطا نمی دهد ولی سرریز را به ماه بعد اضافه می کند.
const d = new Date(2020, 11, 32);
شیء تاریخ بر اساس مهر زمانی (timestamp)
می توانیم با استفاده از مهر زمانی (timestamp)، شیء Date() بسازیم. در جاوا اسکریپت مهر زمانی بر اساس میلی ثانیه است.
نکته: مهر زمانی یا timestamp راهی برای محاسبه زمان از طریق جمع ثانیه هاست. زمان شروع این محاسبه 1970/01/01 به وقت UTC است، که به آن مبدا زمان می گویند. با کمک مهر زمانی سیستم های کامپیوتری و برنامه ها می توانند بدون توجه موقیت مکانی، زمان را محاسبه، مقایسه و ذخیره کنند.
const d = new Date(0);
const d = new Date(1000000000000);
const d = new Date(-1000000000000);
برای تبدیل شیء تاریخ به مهر زمانی، می توانیم از تابع Number استفاده کنیم.
const now = new Date();
const timestamp = Number(now);
همانطور که گفته شد مهر زمانی جمع ثانیه ها از 1970/01/01 است. برای محاسبه مهر زمانی یک روز می توانیم از فرمول زیر استفاده کنیم.
// 1000 * 60 * 60 * 24 = 86,400,000
// هر ثانیه 1000 میلی ثانیه است
// هر دقیقه 60 ثانیه است
// هر ساعت 60 دقیقه است
// هر روز 24 ساعت است
// هر ماه 30 روز است
با کمک مهر زمانی می توانیم محاسبات زمان را انجام دهیم.
به طور مثال اگر بخواهیم اشتراک 30 روزِ بفروشیم. برای محاسبه زمان انقضا اشتراک می توانیم مهر زمانی فعلی را بعلاوه مهر زمانی 30 روز کنیم. برای درک بهتر مثال زیر را ببینید.
const now_ts = Number(new Date()); // مهر زمانی الان
const ts = 1000 * 60 * 60 * 24 * 30; // مهر زمانی 30 روز
const expired_ts = now_ts + ts; // محاسبه مهر زمانی 30 روز بعد
const expired_date = new Date(expired_ts);
نمایش تاریخ در JS
هنگامی که یک شیء تاریخ را با متد innerHTML نمایش می دهیم، JS به صورت خودکار از متد toString استفاده می کند.
now;
now.toString();
متدهای دیگری نیز برای نمایش مختلف تاریخ وجود دارد.
now.toDateString();
now.toUTCString();
now.toISOString();
now now.toString() |
|
now.toDateString() | |
now.toUTCString() | |
now.toISOString() |
مقایسه تاریخ
مقایسه تاریخ ها به سادگی با استفاده از عملگرهای مقایسهای انجام میشود. این عملگرها میتوانند تفاوت بین دو شیء تاریخ را مشخص کنند.
const today = new Date();
const someday = new Date("2024-11-07");
if (someday > today) {
document.getElementById("demo").innerHTML = 'وضعیت 1';
} else {
document.getElementById("demo").innerHTML = 'وضعیت 2';
}
خلاصه درس
در این فصل با نحوه ی ایجاد کردن تاریخ و بعضی از متد های قابل استفاده برای شخصی سازی تاریخ در JS آشناشدیم.