JavaScriptda sana bilan ishlash uchun new Date() ishlatgansiz. Python'da bu vazifani datetime moduli bajaradi:
// JavaScript
const now = new Date();
console.log(now.getDate(), now.getMonth() + 1, now.getFullYear());# Python
from datetime import datetime
now = datetime.now()
print(now) # 2021-07-08 07:34:46.549883
day = now.day
month = now.month
year = now.year
hour = now.hour
minute = now.minute
print(f'{day}/{month}/{year}, {hour}:{minute}') # 8/7/2021, 7:38🟡 Farqi: JS'da
getMonth()0-dan boshlanadi (Yanvar = 0), shuning uchun+1qo'shish kerak edi. Python'da oy raqami to'g'ridan-to'g'ri 1-dan boshlanadi —monthxususiyati Yanvar uchun1qaytaradi, qo'shimcha hisoblash kerak emas.
Timestamp — 1970-yil 1-yanvardan beri o'tgan soniyalar soni:
print(now.timestamp())🟡 JS'da
Date.now()millisekundlarda qaytaradi, Python'dagi.timestamp()esa soniyalarda qaytaradi — 1000 ga ko'paytirish kerak bo'lsa, solishtirayotganda esda tuting.
JS'da sanani chiroyli formatda chiqarish uchun toLocaleDateString() yoki qo'lda formatlashardingiz. Python'da .strftime() metodi maxsus belgilar orqali ishlaydi:
from datetime import datetime
now = datetime.now()
t = now.strftime("%H:%M:%S")
print('vaqt:', t) # 18:21:40
time_one = now.strftime("%d/%m/%Y, %H:%M:%S") # kun/oy/yil, soat:minut:soniya
print('format 1:', time_one) # 28/06/2022, 18:21:40Eng ko'p ishlatiladigan belgilar: %d (kun), %m (oy), %Y (yil, 4 xonali), %H (soat), %M (minut), %S (soniya), %B (oy nomi to'liq).
Bu strftimening teskarisi — matnni datetime obyektiga aylantiradi:
from datetime import datetime
date_string = "5 December, 2019"
date_object = datetime.strptime(date_string, "%d %B, %Y")
print(date_object) # 2019-12-05 00:00:00🟡 JS'da bunga eng yaqini
new Date('5 December, 2019')— lekin JS bu formatni avtomatik "taxmin qilib" o'qiydi, Python'da esa formatni aniq ko'rsatishingiz kerak, bu esa xatolarni kamaytiradi.
Agar faqat sana (vaqtsiz) yoki faqat vaqt (sanasiz) kerak bo'lsa:
from datetime import date, time
d = date(2020, 1, 1)
print(d) # 2020-01-01
print(date.today()) # bugungi sana
t = time(10, 30, 50) # faqat vaqt: soat, minut, soniya
print(t) # 10:30:50Python'da ikki sanani to'g'ridan-to'g'ri - bilan ayirish mumkin — bu juda qulay (JS'da millisekundlarga aylantirib, qo'lda hisoblash kerak edi):
from datetime import date, datetime, timedelta
today = date(year=2019, month=12, day=5)
new_year = date(year=2020, month=1, day=1)
print(new_year - today) # 27 days, 0:00:00
t1 = timedelta(weeks=12, days=10, hours=4)
t2 = timedelta(days=7, hours=5)
print(t1 - t2) # timedelta — vaqt oralig'ini ifodalaydi🟢 JS'da:
(newYear - today) / (1000 * 60 * 60 * 24)deb millisekundlarni kunlarga aylantirish kerak edi. Python'dadatetime/dateobyektlarini ayirish natijasi avtomatiktimedelta(vaqt oralig'i) obyektini beradi — qo'shimcha hisoblash shart emas.
🌕 Siz ajoyibsiz, 16 qadam oldindasiz! 16-kun challenge'ini tugatdingiz. Endi mashqlarni bajaring.
datetimemodulidan joriy kun, oy, yil, soat, minut va timestamp'ni olib chiqing.- Joriy sanani
"%m/%d/%Y, %H:%M:%S"formatida chiqaring. "5 December, 2019"satrinidatetimeobyektiga aylantiring.- Hozirgi vaqt va Yangi yil orasidagi farqni hisoblang.
- 1970-yil 1-yanvar va hozirgi vaqt orasidagi farqni hisoblang.
- O'ylab ko'ring:
datetimemodulini qayerda ishlatish mumkin? Masalan:- Vaqt qatorlari (time series) tahlili
- Ilovadagi har bir harakatning vaqt belgisini (timestamp) olish
- Blogga post qo'shish vaqti
🎉 TABRIKLAYMIZ! 🎉