Python'da pytz kutubxonasi va datetime moduli o'rtasidagi farqlar nima?
sobes.tech AI
AIdan javob
datetime moduli asosiy turdagi sanalar va vaqt bilan ishlash uchun taqdim etadi, ammo uning vaqt mintaqalarini qo'llab-quvvatlash cheklangan. U vaqt mintaqasi ma'lumotlari (vaqt mintaqasi bilan ongli obyektlar) bilan obyektlar yaratishi mumkin, ammo u vaqt mintaqalari bazasi yoki yoz vaqtiga o'tish qoidalarini o'z ichiga olmaydi.
Python'da vaqt mintaqalari bilan ishlash uchun de-fakto standart bo'lib qolgan pytz kutubxonasi, IANA Time Zone Database spetsifikatsiyasini amalga oshiradigan keng vaqt mintaqalari bazasini taklif qiladi. Bu, turli vaqt mintaqalari orasida vaqtni to'g'ri konvert qilish imkonini beradi, tarixiy o'zgarishlar va yoz vaqtiga o'tish qoidalarini hisobga oladi.
Asosiy farqlar:
- Vaqt mintaqasi bazasi:
pytzichki bazaga ega,datetime(standart kutubxonada) esa yo'q. - Vaqt mintaqasi bilan ongli obyektlar yaratish:
pytzbilan budatetimeobyektiningtzinfomaydoniga vaqt mintaqasi ob'ektini tayinlash orqali amalga oshiriladi.datetimedatzinfoni belgilash mumkin, ammo bazasiz, bu haqiqiy vaqt mintaqalari va yoz vaqtiga o'tish uchun kam foydalidir. - Yoz vaqtiga o'tishlarni boshqarish:
pytztarixiy o'tishlar va vaqt mintaqalaridagi o'zgarishlarni to'g'ri boshqaradi.datetimeesa bunday emas. - Mahalliylashtirish: Berilgan vaqt mintaqasi uchun to'g'ri mahalliy vaqtni olish uchun
pytzzarur.
pytz yordamida vaqt mintaqasini hisobga olgan holda datetime obyektini yaratish misoli:
import datetime
import pytz
# Nyu-York uchun vaqt mintaqasi ob'ektini olamiz
ny_tz = pytz.timezone('America/New_York')
# Naive datetime obyektini yaratamiz
naive_dt = datetime.datetime(2023, 10, 27, 12, 0, 0)
# Naive datetime ni Nyu-York uchun aware obyektga aylantiramiz
aware_dt_ny = ny_tz.localize(naive_dt)
# Boshqa vaqt mintaqasiga o'tamiz (masalan, UTC)
aware_dt_utc = aware_dt_ny.astimezone(pytz.utc)
# Natijalarni chiqaramiz
print(f"Naive datetime: {naive_dt}")
print(f"Nyu-York aware datetime: {aware_dt_ny}")
print(f"UTC aware datetime: {aware_dt_utc}")