1. Zaman zonalarının önəmi
Zaman zonaları – bu sadəcə beynəlxalq reyslərdə bir az jetlaq keçirmək üçün rahat bir bəhanə deyil. Onlar proqramlaşdırmada mühüm rol oynayırlar, xüsusilə qlobal tətbiqlər və xidmətlərdən söhbət gedəndə. Zaman zonaları üzrə vaxtı izləmək məlumatların saxlanması və göstərilməsi, iş tapşırıqlarının planlaşdırılması, dünya üzrə komandaların koordinasiyası və daha bir çox şey üçün zəruridir. Zaman zonalarına diqqət yetirmədən kodunuz əsl vaxt anomaliyası yarada bilər və heç kim bunu arzulamaz, hə?
Zaman zonası nədir?
Zaman zonası – bu, bütün saatların eyni standart vaxta uyğun göstərildiyi bir regiondur. Hər bir zaman zonası Universal Koordinasiya Edilmiş Vaxtdan (UTC) olan ofset ilə müəyyən olunur. Məsələn, əgər sizin zonada vaxt UTC-dən iki saat irəlidirsə, sizin saat qurşağınız UTC+2 kimi göstərilir.
Zamanın müxtəlif zonalara çevrilməsi
Vaxtla əlaqəli məlumatlarla işləyəndə tez-tez bir zonadan digərinə zamanı uyğunlaşdırmaq zərurəti yaranır. Məsələn, siz marketinq kampaniyasının serverdə, hansı ki, UTC vaxtı ilə işləyir, yayınlanmasını planlaşdırırsınız, amma bunun Nyu-York vaxtı ilə (UTC-5) dəqiq səhər 9-da baş verməsini istəyirsiniz. Burada zaman zonaları köməyə gəlir.
Bu prosesi asanlaşdırmaq üçün Python pytz
kitabxanasını təqdim edir, hansı ki, zonalar arasında vaxtı konvert etməyə kömək edir. Gəlin onun istifadəsinə dair nümunələrə birlikdə baxaq.
2. Python-da zaman zonaları ilə işləmək
Zaman zonalarını idarə etmək üçün pytz-dən istifadə
Quraşdırmadan sonra pytz
ilə testlərə başlaya bilərik. Kitabxananı datetime
ilə birlikdə import edirik:
from datetime import datetime
import pytz
Müəyyən zaman zonasındakı cari vaxtı əldə etmək
Gəlin, Nyu Yorkda saatın neçə olduğunu öyrənək:
# Nyu-York üçün zaman zonası obyekti yaradırıq
ny_tz = pytz.timezone('America/New_York')
# UTC zamanı əldə edirik
utc_now = datetime.now(pytz.utc)
# UTC zamanını Nyu-York zamanına çeviririk
ny_time = utc_now.astimezone(ny_tz)
# Nəticəni çap edirik
print("Hazırda Nyu-Yorkda saat:", ny_time)
Bu kod UTC vaxtını Nyu-York vaxtına çevirir və sonra oxunaqlı formatda göstərir.
Zonalar arasında vaxtın konvertasiyası
Təsəvvür edin ki, Londonda hansısa bir mühüm hadisənin vaxtı var və Tokio vaxtı ilə onun nə vaxt baş verəcəyini bilməlisiniz.
# Londondakı hadisə vaxtı
event_time = datetime(2023, 10, 31, 15, 0, 0, tzinfo=pytz.utc).astimezone(pytz.timezone('Europe/London'))
# Vaxtı Tokiyoya çeviririk
tokyo_tz = pytz.timezone('Asia/Tokyo')
event_time_tokyo = event_time.astimezone(tokyo_tz)
print("Tokioda hadisə vaxtı:", event_time_tokyo)
3. Python-da zaman zonaları ilə ətraflı iş
Mövcud zaman zonalarının siyahısı
pytz.all_timezones
vasitəsilə pytz
kitabxanası tərəfindən dəstəklənən bütün zaman zonalarının siyahısını əldə etmək olar.
import pytz
print("Zaman zonalarına nümunə:")
for timezone in pytz.all_timezones[:5]: # İlk 5 zaman zonasını göstərmək
print(timezone)
Nəticə (bir hissəsi):
Zaman zonalarına nümunə:
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Zaman zonasının təyin edilməsi və `datetime` obyektinin yaradılması
pytz.timezone()
vasitəsilə tarix və zaman üçün lazımi zaman zonasını təyin etmək mümkündür. Müəyyən bir zaman zonası ilə datetime
obyektinin necə yaradılmasını nəzərdən keçirək.
from datetime import datetime
import pytz
# "Europe/Moscow" zaman zonasını seçirik
moscow_timezone = pytz.timezone("Europe/Moscow")
current_time_moscow = datetime.now(moscow_timezone)
print("Moskvada indiki zaman:", current_time_moscow)
Yay vaxtına keçidin nəzərə alınması
Zaman zonalarının vacib aspektlərindən biri yay vaxtına keçidin nəzərə alınmasıdır, bu pytz
-də avtomatlaşdırılıb. Məsələn, ABŞ-da zamanla işləyirsinizsə, kitabxana yay vaxtı tətbiq edildiyi halda avtomatik olaraq saat fərqini tətbiq edir.
from datetime import datetime
import pytz
# Yay vaxtı dövrünə düşən tarixi təyin edirik
date_in_summer = datetime(2024, 7, 1, 12, 0, 0)
ny_timezone = pytz.timezone("America/New_York")
ny_summer_time = ny_timezone.localize(date_in_summer)
print("Nyu-Yorkda yay vaxtı:", ny_summer_time)
# Yay vaxtı dövrünə düşməyən tarixi təyin edirik
date_in_winter = datetime(2024, 12, 1, 12, 0, 0)
ny_winter_time = ny_timezone.localize(date_in_winter)
print("Nyu-Yorkda qış vaxtı:", ny_winter_time)
Burada pytz
avtomatik olaraq müəyyən edir ki, 1 iyul yay vaxtı dövrünə aiddir və bir saatlıq fərqi tətbiq edir.
Zaman zonaları ilə iş üçün faydalı funksiyalar
- Bütün zaman zonalarının əldə edilməsi:
pytz.all_timezones
bütün zaman zonalarının siyahısını qaytarır. - UTC-yə konvertasiya:
astimezone(pytz.utc)
metodu istənilən zamanı UTC-yə çevirir. - Sətir formatında olan zamandan
datetime
formatına keçid:datetime.strptime()
istifadə edərək sətir formatındakı zamanıdatetime
-ə çevirə və ona zaman zonası əlavə edə bilərsiniz. - Zaman zonalarının yenilənməsi: Zaman zonalarını yeniləmək üçün
pytz.update()
istifadə olunur.
GO TO FULL VERSION