مدیریت زمان، تاریخ و اجرای عملیات در بازه‌های زمانی مشخص، از کلیدی‌ترین بخش‌ها در توسعه وب‌سایت‌ها و اپلیکیشن‌های پویاست. در جاوااسکریپت، شیء داخلی Date ابزار اصلی برای کار با تاریخ و زمان است. در کنار این شیء، توابع زمانی خاصی نیز وجود دارند که به برنامه‌نویسان اجازه می‌دهند اجرای کدهای خود را به تأخیر بیندازند یا آن‌ها را در فواصل زمانی مشخص تکرار کنند. در این مقاله به بررسی دقیق شیء Date، متدهای کاربردی آن و مباحث مدیریت زمان در جاوااسکریپت می‌پردازیم.

مفهوم شیء Date و نحوه ساخته شدن آن

شیء Date در جاوااسکریپت نشان‌دهنده یک لحظه واحد در زمان است. این شیء زمان را بر اساس میلی‌ثانیه‌های سپری‌شده از مبدأ زمانی استاندارد (یعنی اول ژانویه ۱۹۷۰ میلادی) محاسبه می‌کند.

برای شروع کار با تاریخ، ابتدا باید یک نمونه یا شیء جدید از روی کلاس Date بسازیم. این کار به چهار روش اصلی انجام می‌شود. در روش اول، بدون پاس دادن هیچ آرگومانی، شیء ساخته‌شده تاریخ و ساعت دقیق سیستم کاربر را در همان لحظه نشان می‌دهد. در روش دوم، می‌توانیم یک رشته متنی حاوی تاریخ استاندارد را به آن پاس دهیم تا جاوااسکریپت آن را تحلیل و به شیء تاریخ تبدیل کند. در روش سوم، می‌توان مشخصات تاریخ را به تفکیک سال، ماه، روز، ساعت، دقیقه و ثانیه وارد کرد که در این حالت باید به یاد داشت شمارش ماه‌ها در جاوااسکریپت از صفر (ژانویه) شروع می‌شود. روش چهارم نیز پاس دادن میلی‌ثانیه مستقیم از مبدأ زمانی است.

متدهای دریافت اطلاعات از شیء تاریخ (Getters)

زمانی که یک شیء تاریخ ایجاد کردیم، به کمک متدهای مختلفی می‌توانیم اجزای گوناگون آن را استخراج کنیم. این متدها اطلاعات را به صورت محلی (بر اساس منطقه زمانی سیستم کاربر) یا بر اساس زمان هماهنگ جهانی (UTC) برمی‌گردانند.

به عنوان نمونه، متدهایی وجود دارند که سال چهاررقمی را به ما می‌دهند. متد دیگری شماره ماه را بازمی‌گرداند که عددی بین ۰ تا ۱۱ است. برای دریافت روزِ ماه (عددی بین ۱ تا ۳۱) و همچنین روزِ هفته (عددی بین ۰ برای یکشنبه تا ۶ برای شنبه) متدهای مشخصی طراحی شده‌اند. علاوه بر این موارد، می‌توان ساعت، دقیقه، ثانیه و میلی‌ثانیه‌های ثبت‌شده در آن شیء را به طور مجزا دریافت کرد. برای به دست آوردن زمان کل به میلی‌ثانیه نیز متد ویژه‌ای وجود دارد که در محاسبات و مقایسه زمان‌ها بسیار پرکاربرد است.

متدهای تنظیم و تغییر اطلاعات تاریخ (Setters)

علاوه بر خواندن اطلاعات، جاوااسکریپت این امکان را به ما می‌دهد که مقادیر موجود در یک شیء تاریخ را تغییر دهیم. متدهای ویرایشی دقیقاً متناظر با متدهای دریافت اطلاعات هستند.

با استفاده از این متدها می‌توانید سال، ماه، روزِ ماه، ساعت، دقیقه یا ثانیه یک شیء تاریخِ ازقبل‌ساخته‌شده را به مقدار دلخواه خود تغییر دهید. یکی از ویژگی‌های جالب این متدها، رفتار خودکار آن‌ها در مواجهه با مقادیر خارج از محدوده است. به عنوان مثال، اگر روزِ ماه را روی عدد ۳۲ تنظیم کنید، جاوااسکریپت به طور خودکار تاریخ را به روز اول ماه بعدی منتقل می‌کند که این ویژگی محاسبات تاریخی را بسیار ساده‌تر می‌سازد.

فرمت‌دهی و نمایش تاریخ به کاربر

نمایش تاریخ خام به کاربران معمولاً خوانا و مناسب نیست. شیء Date متدهای مختلفی را برای تبدیل تاریخ به رشته‌های متنی خوانا ارائه می‌دهد.

برخی از این متدها کل اطلاعات تاریخ و زمان را به یک رشته استاندارد و طولانی تبدیل می‌کنند. متدهای دیگری وجود دارند که فقط بخش تاریخ یا فقط بخش ساعت را استخراج کرده و نمایش می‌دهند. همچنین برای پروژه‌های بین‌المللی، متدهای بومی‌سازی بسیار قدرتمندی در جاوااسکریپت تعبیه شده است که به کمک آن‌ها می‌توان تاریخ را به صورت خودکار و بر اساس زبان و تقویم محلی کاربر (مانند تقویم هجری شمسی برای کاربران فارسی‌زبان) بدون نیاز به کتابخانه‌های جانبی فرمت‌دهی کرد.

مباحث زمانی و توابع زمان‌بندی در جاوااسکریپت

مدیریت زمان در جاوااسکریپت فراتر از کار با تاریخ‌ها است. در محیط مرورگر و سیستم‌های تحت جاوااسکریپت، ما نیاز داریم تا اجرای برخی از کارها را مدیریت کنیم. دو تابع بسیار مهم برای این کار وجود دارد.

تابع اول برای به تأخیر انداختن اجرای یک عمل استفاده می‌شود. با این تابع مشخص می‌کنیم که یک قطعه کد پس از گذشت مدت‌زمان مشخصی (به میلی‌ثانیه) فقط برای یک‌بار اجرا شود. تابع دوم برای تکرار مداوم یک عمل کاربرد دارد. به کمک آن می‌توان مشخص کرد که یک قطعه کد به صورت دوره‌ای و در فواصل زمانی معین بارها و بارها اجرا شود. هر دوی این توابع یک شناسه منحصربه‌فرد بازمی‌گردانند که با استفاده از توابع لغو‌کننده متناظر، می‌توان اجرای آن‌ها را متوقف کرد؛ موضوعی که برای جلوگیری از نشت حافظه و بهبود عملکرد برنامه بسیار حیاتی است.

کلیدواژه ها : شیء Date در جاوااسکریپت-مدیریت زمان در جاوااسکریپت-کار با تاریخ در جاوااسکریپت-متدهای شیء Date-توابع زمان بندی جاوااسکریپت-JavaScript Date Object-JavaScript time management-Date methods in JS-setTimeout and setInterval-