Middle
Aké sú rozdiely medzi knižnicou pytz a modulom datetime v Pythone?
sobes.tech AI
Odpoveď od AI
Modul datetime poskytuje základné typy na prácu s dátumami a časmi, ale jeho podpora časových pásiem je obmedzená. Môže vytvárať objekty s informáciami o časovom pásme (objekty s vedomím o časovom pásme), ale neobsahuje databázu časových pásiem ani pravidlá pre prechod na letný čas.
Knižnica pytz (de facto štandard pre prácu s časovými pásmi v Pythone) ponúka rozsiahlu databázu časových pásiem (ktorá implementuje špecifikáciu IANA Time Zone Database). Umožňuje správne konvertovať čas medzi rôznymi časovými pásmi, s prihliadnutím na historické zmeny a pravidlá prechodov na letný čas.
Hlavné rozdiely:
- Databáza časových pásiem:
pytzmá vstavanú databázu,datetime(v štandardnej knižnici) nie. - Vytváranie objektov s vedomím o časovom pásme: S
pytzsa to robí priradením objektu časového pásma k poľutzinfoobjektudatetime. Vdatetimeje možné špecifikovaťtzinfo, ale bez databázy je to málo užitočné pre skutočné časové pásma s prechodmi na letný čas. - Spracovanie prechodov na letný čas:
pytzsprávne spracováva historické prechody a zmeny v časových pásmach.datetimeto nerobí. - Lokalizácia:
pytzje nevyhnutná na získanie správne lokalizovaného času pre dané časové pásmo.
Príklad vytvorenia objektu datetime s ohľadom na časové pásmo pomocou pytz:
import datetime
import pytz
# Získame objekt časového pásma pre New York
ny_tz = pytz.timezone('America/New_York')
# Vytvoríme naive datetime
naive_dt = datetime.datetime(2023, 10, 27, 12, 0, 0)
# Konvertujeme naive datetime na aware objekt pre New York
aware_dt_ny = ny_tz.localize(naive_dt)
# Konvertujeme do iného časového pásma (napríklad UTC)
aware_dt_utc = aware_dt_ny.astimezone(pytz.utc)
# Zobrazíme výsledky
print(f"Naive datetime: {naive_dt}")
print(f"Aware datetime pre New York: {aware_dt_ny}")
print(f"Aware datetime v UTC: {aware_dt_utc}")