Middle
Care sunt diferențele dintre biblioteca pytz și modulul datetime în Python?
sobes.tech AI
Răspuns de la AI
Modulul datetime oferă tipuri de bază pentru lucrul cu date și ore, dar suportul său pentru fusurile orare este limitat. Poate crea obiecte cu informații despre fusul orar (obiecte conștiente de fusul orar), dar nu conține o bază de date cu fusuri orare sau reguli pentru trecerea la ora de vară.
Biblioteca pytz (standardul de facto pentru lucrul cu fusurile orare în Python) oferă o bază de date extinsă de fusuri orare (care implementează specificația IANA Time Zone Database). Permite convertirea corectă a timpului între diferite fusuri orare, ținând cont de schimbările istorice și regulile de trecere la ora de vară.
Principalele diferențe:
- Baza de date de fusuri orare:
pytzare o bază de date încorporată,datetime(din biblioteca standard) nu. - Crearea de obiecte conștiente de fusul orar: Cu
pytz, acest lucru se face atribuind un obiect de fus orar câmpuluitzinfoal unui obiectdatetime. Îndatetime, se poate specificatzinfo, dar fără o bază de date, acest lucru este puțin util pentru fusurile orare reale cu trecerea la ora de vară. - Gestionarea trecerii la ora de vară:
pytzgestionează corect trecerile istorice și modificările fusurilor orare.datetimenu. - Localizare:
pytzeste necesar pentru a obține timpul localizat corect pentru un fus orar dat.
Exemplu de creare a unui obiect datetime ținând cont de fusul orar cu pytz:
import datetime
import pytz
# Obțineți obiectul fusului orar pentru New York
ny_tz = pytz.timezone('America/New_York')
# Creați un obiect datetime naive
naive_dt = datetime.datetime(2023, 10, 27, 12, 0, 0)
# Convertiți datetime-ul naive într-un obiect conștient pentru New York
aware_dt_ny = ny_tz.localize(naive_dt)
# Convertiți în alt fus orar (de exemplu, UTC)
aware_dt_utc = aware_dt_ny.astimezone(pytz.utc)
# Afișați rezultatele
print(f"Naive datetime: {naive_dt}")
print(f"Datetime conștient pentru New York: {aware_dt_ny}")
print(f"Datetime conștient în UTC: {aware_dt_utc}")