تعداد بازدید: 508

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

مطالب مشابه

Numbers in JavaScript

تمامی انواع عدد در جاواسکریپت به صورت یک نوع ساختمان داده تعریف می گردد. فضایی که در حافظه برای نوع داده Number تخصیص...

Strings in JavaScript

در این مقاله نوع داده رشته String  به همراه Methods,Properties آن ها بررسی می کنیم. این که چگونه با رشته ها برخورد می...

Obeject Data Structure in JavaScript

هر زبان برنامه نویسی از دو ساختار اصلی تشکیل شده است . بخش اول (Data Structure) ساختمان های داده آن و بخش دوم لیست...

کار با تاریخ و زمان در php

تاریخ و زمان در php

در ابتدا به دو مفهوم مهم در تاریخ و زمان در زبان پی اچ پی اشاره می کنیم : Greenwich Mean Time (GMT) زمان گرینویچ یا...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای Date Time in JavaScript

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *