Sobes.tech
Middle

Python'da pytz kitabxanası ilə datetime modulu arasındakı fərqlər nədir?

sobes.tech Süni İntellekt

AI-dan cavab

datetime modulu tarix və saat ilə işləmək üçün əsas tiplər təqdim edir, lakin onun saat qurşaqları dəstəyi məhduddur. O, saat qurşağı haqqında məlumatları (saat qurşağı ilə məlumatlı obyektlər) yarada bilər, lakin saat qurşaqları bazası və yay vaxtına keçid qaydalarını ehtiva etmir.

Python-da saat qurşaqları ilə işləmək üçün de-fakto standart pytz kitabxanası, IANA Time Zone Database spesifikasiyasını həyata keçirən geniş saat qurşağı bazası təqdim edir. Bu, müxtəlif saat qurşaqları arasında vaxtın düzgün çevrilməsinə imkan verir, tarixi dəyişiklikləri və yay vaxtı qaydalarını nəzərə alır.

Əsas fərqlər:

  • Saat qurşağı bazası: pytz daxili bazaya malikdir, datetime (standart kitabxanada) yox.
  • Saat qurşağı ilə məlumatlı obyektlərin yaradılması: pytz ilə bu, datetime obyektinin tzinfo sahəsinə saat qurşağı obyekti təyin etməklə həyata keçirilir. datetimetzinfo təyin etmək mümkündür, lakin bazasız, bu real saat qurşaqları və yay vaxtı keçidləri üçün az faydalıdır.
  • Yay vaxtına keçidlərin idarə olunması: pytz tarixi keçidləri və saat qurşağı dəyişikliklərini düzgün idarə edir. datetime bunu etmir.
  • Yerelleşdirmə: Verilən saat qurşağı üçün düzgün yerli vaxtı almaq üçün pytz lazımdır.

pytz istifadə edərək saat qurşağını nəzərə alan datetime obyektinin yaradılması nümunəsi:

import datetime
import pytz

# Nyu-York üçün saat qurşağı obyektini əldə edin
ny_tz = pytz.timezone('America/New_York')

# Naive datetime yaradın
naive_dt = datetime.datetime(2023, 10, 27, 12, 0, 0)

# Naive datetime-i Nyu-York üçün saat qurşağı ilə məlumatlı obyektə çevirin
aware_dt_ny = ny_tz.localize(naive_dt)

# Digər saat qurşağına çevirin (məsələn, UTC)
aware_dt_utc = aware_dt_ny.astimezone(pytz.utc)

# Nəticələri göstərin
print(f"Naive datetime: {naive_dt}")
print(f"Nyu-York saat qurşağı ilə məlumatlı datetime: {aware_dt_ny}")
print(f"UTC-də məlumatlı datetime: {aware_dt_utc}")