Date Time in JavaScript
زمان یک میلی ثانیه از تاریخ در جریان است که مستقل از هر platform (این که روی چه سروری است و چه مرورگری در چه منطقه زمانی در حال دریافت زمان است) در حال اجرا می باشد. این زمان در کامپیوتر تعداد میلی ثانیه های گذشته شده از ۱ ژانویه ۱۹۷۰ می باشد.
از یک ژانویه ۱۹۷۰ تا به الان چند سال گذشته است :
// Calculate milliseconds in a year const minute = 1000 * 60; const hour = minute * 60; const day = hour * 24; const year = day * 365; // Divide Time with a year const d = new Date(); let years = Math.round(d.getTime() / year);
به طور مثال لحظه ای که در آن هستیم یک عدد 1652575201436 از ابتدای این تاریخ (انتشار سیستم عامل یونیکس بوده است). این زمان بیشتر قابل فهم برای کامپیوتر است . برای این که این زمان با فرمت قابل خواندن برای انسان نمایش داده گردد لازم است با فرمت های زیر تبدیل گردد:
- Year
- Month
- Day
- Hour
- Minute
- Second
- MilliSecond
هر ۱۰۰۰ میلی ثانیه یک ثانیه است و هر ۶۰ ثانیه یک دقیقه و هر ۶۰ دقیقه یک ساعت و هر ۲۴ ساعت یک روز و هر تقریبا ۳۰ روز یک ماه و هر ۱۲ ماه یک سال می باشد که فرمت این عدد بزرگ را (Time) به یک فرمت قابل خواندن تبدیل می کند.
Months in Gregorian calendar
Month | Abbreviation | Number | Jalali period |
January | Jan | 1 | ۱۱ دی تا ۱۱ بهمن |
February | Feb | 2 | ۱۲ بهمن تا ۹ اسفند |
March | 3 | ۱۰ اسفند تا ۱۱ فروردین | |
April | 4 | ۱۲ فروردین تا ۱۰ اردیبهشت | |
May | 5 | ۱۱ اردیبهشت تا ۱۰ خرداد | |
June | 6 | ۱۱ خرداد تا ۹ تیر | |
July | 7 | ۱۰ تیر تا ۹ مرداد | |
August | Aug | 8 | ۱۰ مرداد تا ۹ شهریور |
September | Sept | 9 | ۱۰ شهریور تا ۸ مهر |
October | Oct | 10 | ۹ مهر تا ۹ آبان |
November | Nov | 11 | ۱۰ آبان تا ۹ آذر |
December | Dec | 12 | ۱۰ آذر تا ۱۰ دی |
Time Zone
منظقه زمانی یا Time Zone یعنی زمان در آن منطقه نسبت به نصف النهار مبدا . مطمئنا زمان در هر نقطه از کره زمین یکسان با سایر نقاط نیست . اما یک نقطه مبدا UTC برای هماهنگی در نظر گرفته شده است و زمانی که microtime را بدست می آورید نسبت به آن منطقه زمانی است .
هر نصف النهار یک سری کشور ها را در بر می گیرد و گاهی برخی منطقه های زمانی بسته به جغرافیای آن ها می تواند جزو تعدادی نصف النهار ها بشود یک تعریف برای آن ها در نظر می گیریم . لیست کل منطقه های زمانی به همراه مخفف آن ها (List of UTC offsets)
Time Zone بر اساس مرز کشور ها می باشد و یک نام کامل دارد و یک نام خلاصه . به طور مثال ایران در Asia/Tehran و IRDT Iran Daylight Time UTC+04:30 ld می باشد .
برخی عدد ۴ ساعت و ۳۰ دقیقه را به شکل +430
نمایش می دهند که نمایانگر اختلاف زمانی برای این مقدارد است.
Abbr | Name | UTC Offset | Alias |
IRDT | Iran Daylight Time | UTC+04:30 | Asia/Tehran |
EDT | Eastern Daylight Time (North America) | UTC−04 | America/New_York |
CET | Central European Time | UTC+01 | Europe/Berlin |
UTC (Coordinated Universal Time)
UTC زمان استاندارد است که توسط سیستم اندازه گیری تعیین شده می باشد و GMT زمان نسبت به رصد خانه گرینویچ لندن است . هر دو یک استاندارد زمانی هستند و اختلاف چندانی ندارد و تقریبا یکسان هستند. GMT برای استاندارد های زمانی برای برخی کشورها استفاده می شود و در علوم کامپیوتر مثل اینترنت و سیستم عامل از UTC استفاده می کنیم .
UTC پایه و اساس ریاضی دارد (اندازه گیری) و GMT پایه و اساس نجوم دارند. مقدار آن ها تقریبا یکسان است و اختلاف آن ها کم تر از یک میلی ثانیه است .
UTC استاندارد بر اساس منطقه صفر نصف النهار مبدا می باشد که شامل کشور انگلستان می شود . بقیه کشور ها نسبت به این منطقه از -۱۲ تا +۱۲ می باشند که به آن اختلاف زمانی از استاندارد UTC Offset می گویند که بر اساس کشور های خاص این اعداد متفاوت است. به این ترتیب می توان با داشتن زمان UNIXTIME و منطقه زمانی UTC زمان را در آن منطقه پیدا کرد. تصویر ویکی پدیا لیست منطقه های زمانی را نسبت به استاندارد UTC نشان می دهد.
JavaScript Date Reference
موجودیت Date یک شئ است برای کار با date , time . سازنده این کلاس به سه شکل ورودی برای تنظیم تاریخ و زمان می گیرد.
- empty Now : ورودی خالی برای لحظه کنونی now
- Sequence of Params : ورودی به صورت زنجیره ای از پارامتر های زمان (year, month, day, hours, minutes, seconds, milliseconds)
- Unix time as milliseconds : همان میلی ثانیه گذشته شده از ۱ ژانویه ۱۹۷۰
- Date String : یک رشته که فرمت های استاندارد خود را دارد و بیانگر تاریخ مورد نظر می باشد.
new Date(); new Date(milliseconds); new Date(dateString); new Date(year, month, day, hours, minutes, seconds, milliseconds);
پس از ساختن شئ یک چنین فرمتی برای ما این تاریخ را نمایش می دهد. دقت داشته باشید منطقه زمانی در این تاریخ بر اساس بستر مرورگر می باشد . اگر با nodejs این مقدار را اجرا کنیم منطقه زمانی بستر سروری که nodejs روی آن نصب شده است.
var d = new Date console.log(d) //Date Mon May 16 2022 23:36:23 GMT+0430 (Iran Daylight Time)
Sequence of Params
به صورت این است هر یک از این پارامتر ها را به سازنده این کلاس می دهیم . در نهایت هر یک از آن ها می توانیم فاکتور بگیریم . به طور مثال :
- year, month, day, hours, minutes, seconds, milliseconds
- year, month, day, hours, minutes, seconds
- year, month, day, hours, minutes
- year, month, day, hours
- year, month, day
- year, month
- year
const d = new Date(2018, 6, 5, 10, 33, 30); const d = new Date(2018, 11, 24, 10, 33); const d = new Date(2018, 11, 24, 10); const d = new Date(2018, 11, 24); const d = new Date(2018, 11); const d = new Date(2018);
برای تعریف هر یک از پارامتر های گفته شده نیازی به zero index نداریم و می توان به صورت عادی ست کرد.
Date String
Type | Example | Description |
ISO Date | 2015-03-25 |
به صورت سال/روز/ماه و با فرمت صفر در پشت آن. دقت داشته باشید ماه در انتها است و روز در وسط |
Short Date | 03/25/2015 |
از سمت چپ ماه روز و سال . دقت کنید روز کماکان در وسط است و جای سال و ماه نسبت به فرمت اول عوض شده است |
Long Date | Mar 25 2015" or "25 Mar 2015 |
به صورت رشته ای از سمت چپ ماه روز سال و یا روز ماه سال می باشد. |
برای زمان از فرمت ساعت:دقیقه:ثانیه:میلی ثانیه در هر یک از فرمت های بالا استفاده می کنیم. به طور مثال یک فرمت کامل از تاریخ و زمان 2022/24/03 12:33:50:200
برای هر یک از موارد بالا به ازای هر یک از این موارد از سمت چپ به راست می توان مقدار خالی قرار داد.
const d = new Date("October 13, 2014 11:13:00");
Milliseconds
زمان unixtime را به میلی ثانیه به عنوان ورودی به Date می دهیم.
const d = new Date(86400000); //Fri Jan 02 1970 03:30:00 GMT+0330 (Iran Standard Time)
Display Date
امکان نمایش تاریخ با فرمت خاص ورودی در جاوا اسکریپت نداریم (مثلا مثل php که بتوان یک تاریخ را با فرمت ورودی نمایش داده Y/M/d h:m:s) . در جاوا اسکریپت پارامتر های تاریخ یا به صورت ثابت بر می گردد یا به صورت یک رشته (Date String) بر اساس فرمت های سه گانه گفته شده بر می گرداند.
ISO 8601 Extended format
هر زمان قصد استفاده از تاریخ را در جاوا اسکریپت داشتیم قطعا خروجی ما یک رشته قابل فهم برای زندگی روزمره خواهد بود. فرمت خروجی زمان در جاوا اسکریپت از استاندارد های مختلفی پیروی می کند که معروف ترین آن ها ISO 8601 می باشد.
`YYYY-MM-DDTHH:mm:ss.sssZ`
- YYYY: سال به صورت ۴ رقمی کامل
- MM: ماه به صورت ۲ رقمی در صورتی که عدد صفر ماه های تک رقمی را نگذاریم احتمال اشتباه در مفسر وجود دارد. (01 … 12)
- DD: روز به صورت دو رقمی (0 to 31)
- -: جدا کننده تاریخ که در این استاندارد علامت dash است.
- T: بیان کننده شروع زمان است.
- HH: ساعت به صورت ۲۴ ساعته (0 to 23)
- mm: زمان (0 to 59)
- ss: ثانیه . همان طور که می بینید دو رقمی است. (0 to 59)
- sss: میلی ثانیه سه رقمی است. (0 to 999)
- Z : این مقدار اگر ست شده باشد زمان استاندارد UTC را باید بر گردانیم در غیر این صورت زمان محلی بر اساس Platform جاری مفسر
2022-05-16T20:07:05.602Z
این فرمت خروجی است که جاوا اسکرپیت اتخاذ می کند. فرمت های ورودی را در قسمت قبل گفتیم.
Date Methods
دسته اول برای دریافت و ست کردن پارامتر های زمانی است.
getters | setters | getter UTC | setters UTC | Description |
getDate | setDate | getUTCDate | setUTCDate | این فرمت روز در ماه است که از در بازه 01 تا 31 می باشد. |
getDay | setDay | getUTCDay | setUTCDay | این فرمت روز در هفته است که در بازه 01 تا 07 می باشد |
getFullYear | setFullYear | getUTCFullYear | setUTCFullYear | |
getHours | setHours | getUTCHours | setUTCHours | به صورت فرمت ۲۴ ساعته است 00 – 23 |
getMilliseconds | setMilliseconds | getUTCMilliseconds | setUTCMilliseconds | عددی مابین 000 , 999 |
getMinutes | setMinutes | getUTCMinutes | setUTCMinutes | |
getMonth | setMonth | getUTCMonth | setUTCMonth | |
getSeconds | setSeconds | getUTCSeconds | setUTCSeconds | |
getTime | جهت دریافت unixtime می باشد. در فرمت تاریخ جاری داده شده به Date در زمان construct |
دسته دوم متدهای Date برای کارهای پیاده سازی منطق های زمانی و دریافت رشته های زمانی Date String در استاندارد های مختلف است.
Method | Description |
now | برگرداندن مقدار unixtime به فرمت میلی ثانیه
Date.now() 1652735600716 |
parse | برای برگرداندن مقدار unixtime به ازای تاریخ ورودی (Date String)
let ms = Date.parse("March 21, 2012"); // 1332275400000 |
UTC | برای دریافت مقدار UTC در زمان داده شده به این متد.
Date.UTC(2020, 02, 30); |
toDateString |
const d = new Date(); let text = d.toDateString(); //Tue May 17 2022 |
toISOString |
const d = new Date(); let text = d.toISOString(); //2022-05-16T21:16:13.993Z این نزدیک به همان فرمتی است که مرحله قبل توضیح داده شد. |
toJSON |
const d = new Date(); let text = d.toJSON(); //2022-05-16T21:17:21.178Z |
toLocaleDateString |
const d = new Date(); let text = d.toLocaleDateString(); //5/17/2022 متدهایی که داخل آن ها Locle دارد فرمت short دارد. |
toLocaleTimeString |
const d = new Date(); let text = d.toLocaleTimeString(); //1:50:10 AM |
toLocaleString |
const d = new Date(); let text = d.toLocaleString(); //5/17/2022, 1:51:31 AM |
toString | تبدیل شئ Date به رشته Tue May 17 2022 01:51:48 GMT+0430 (Iran Daylight Time) |
toTimeString | 01:52:47 GMT+0430 (Iran Daylight Time) |
toUTCString | Mon, 16 May 2022 21:24:24 GMT |
زمانی که قرار است پارامتر را به صورت عددی به رشته بدهید(ماه روز ساعت و دقیقه و ثانیه) حتما باید از zero index استفاده کنید. اگر قرار است به صورت رشته وارد کنید لازم به استفاده از zero index نیست. به طور مثال ماه اول در ارسال پارامتر 01 است ولی در به صورت رشته ای 2022/12/1 3:33:25 PM
دیدگاهتان را بنویسید