Ma'lumot turlari

Sana va vaqt (Date)

Sana va vaqt bilan ishlash uchun JavaScript'da o'rnatilgan Date obyekti mavjud. U orqali sanani yasash, uning yil, oy, kunini olish, ikki sana ayirmasini hisoblash mumkin.

Date obyektini yaratish

Yangi sana new Date() orqali yaratiladi. Argumentga qarab, bir necha xil ishlaydi:

Argumentsiz โ€” joriy sana va vaqtni beradi:

date-now.js
// natija shu yerda chiqadi

Satr bilan โ€” matndan sana o'qiladi (parse qilinadi):

date-string.js
// natija shu yerda chiqadi

Komponentlar bilan โ€” yil, oy, kun va h.k. alohida beriladi:

date-components.js
// natija shu yerda chiqadi
Diqqat! Komponentlar bilan yaratganda oy 0'dan boshlanadi: 0 = yanvar, 1 = fevral, ..., 6 = iyul, 11 = dekabr. Shuning uchun iyul uchun 6 yozdik, 7 emas! Bu eng ko'p uchraydigan xatolardan biri.

Sana komponentlarini olish

Yaratilgan sanadan uning qismlarini olish uchun quyidagi metodlar bor:

get-components.js
// natija shu yerda chiqadi
getDay() ham 0'dan boshlanadi va yakshanbaga to'g'ri keladi (AQSh an'anasi). Ya'ni 0 = yakshanba, 1 = dushanba, 6 = shanba.
Yuqoridagi metodlar mahalliy vaqt zonasida ishlaydi. UTC (Greenwich) vaqti kerak bo'lsa, ularning UTC versiyasi bor: getUTCFullYear(), getUTCHours() va hokazo.

Timestamp โ€” getTime()

Har bir sana ichida timestamp saqlanadi โ€” bu 1970-yil 1-yanvar UTC 00:00:00'dan beri o'tgan millisekundlar soni. Bu boshlang'ich nuqta "Unix epoch" deb ataladi.

timestamp.js
// natija shu yerda chiqadi

Timestamp bilan ishlash qulay โ€” chunki u oddiy son. Sanalarni solishtirish yoki ular orasidagi ayirmani hisoblashda aynan shu son ishlatiladi.

Sanalar ayirmasi

Ikki sanani bir-biridan ayirsak, natija millisekundlardagi farq bo'ladi (chunki sanalar avtomatik timestamp'ga aylanadi):

date-diff.js
// natija shu yerda chiqadi

Bu yerda 1000 * 60 * 60 * 24 โ€” bir kundagi millisekundlar soni (1000 ms ร— 60 sek ร— 60 min ร— 24 soat).

Kod tezligini o'lchash uchun ham shu usul ishlatiladi: kod boshida va oxirida vaqtni olib, ayirmasini topamiz.

Date.now()

Agar bizga faqat joriy timestamp kerak bo'lsa (sana obyektining o'zi emas), Date.now() ishlatgan ma'qul. U to'g'ridan-to'g'ri sonni qaytaradi va ortiqcha Date obyekti yasamaydi โ€” bu tezroq:

date-now-perf.js
// natija shu yerda chiqadi
Date.now() = new Date().getTime(), lekin oraliq obyekt yaratmaydi. Ko'p marta chaqiriladigan joylarda aynan Date.now() ishlating.

Avtomatik tuzatish (autocorrection)

Date obyektining qiziq xususiyati bor: chegaradan tashqari qiymat bersangiz, u o'zini avtomatik tuzatadi. Masalan, "32-yanvar" beradigan bo'lsangiz, u "1-fevral"ga aylanadi:

autocorrect.js
// natija shu yerda chiqadi

Bu xususiyat foydali: "bugundan 90 kun keyin" kabi hisoblarni sodda qiladi โ€” chegaradan chiqib ketishdan qo'rqmasdan istalgan kun sonini qo'shaverasiz.

Xulosa