Tutorial Material

Sana va vaqt

Share to
Python sana va vaqt

Python dasturlari sana va vaqt bilan bir nechta usulda ishlashi mumkin. Sana formatlari orasida o'zgartirish (conversion) kompyuterlar uchun juda keng tarqalgan vazifa. Python'dagi time va calendar modullari sana va vaqtni boshqaradi.

Tick nima?

Time interval - sekund birliklaridagi floating-point son. Vaqtning ma'lum bir nuqtasi 1970-yil 1-yanvar, soat 00:00 dan boshlab sekundlarda ifodalanadi.

Quyida misol:

import time; # time modulini import qilish

ticks = time.time()
print("Number of ticks since 12:00am, January 1, 1970:", ticks)

Python TimeTuple nima?

Ko'plab Python time funksiyalari vaqtni 9 ta sondan iborat tuple sifatida qayta ishlaydi:

Index Maydon Qiymat
0 4 xonali yil 2008
1 Oy 1 dan 12 gacha
2 Kun 1 dan 31 gacha
3 Soat 0 dan 23 gacha
4 Daqiqa 0 dan 59 gacha
5 Sekund 0 dan 61 gacha
6 Haftaning kuni 0 dan 6 gacha (0 - dushanba)
7 Yilning kuni 1 dan 366 gacha
8 Daylight savings -1, 0, 1; -1 bo'lsa kutubxona DST'ni o'zi aniqlaydi

Yuqoridagi tuple struct_time tuzilmasiga teng. Bu tuzilma quyidagi atributlarga ega:

Index Atribut Qiymat
0 tm_year 2008
1 tm_mon 1 dan 12 gacha
2 tm_mday 1 dan 31 gacha
3 tm_hour 0 dan 23 gacha
4 tm_min 0 dan 59 gacha
5 tm_sec 0 dan 61 gacha
6 tm_wday 0 dan 6 gacha (0 - dushanba)
7 tm_yday 1 dan 366 gacha
8 tm_isdst -1, 0, 1; -1 bo'lsa kutubxona DST'ni o'zi aniqlaydi

Hozirgi vaqtni olish

Epoch'dan boshlab sekundlarda berilgan qiymatni time-tuple ko'rinishiga o'tkazish uchun float qiymatni localtime kabi funksiyaga bering. Funksiya 9 ta elementdan iborat tuple qaytaradi.

import time;

localtime = time.localtime(time.time())
print("Current local time :", localtime)

Formatlangan vaqtni olish

Vaqtni ehtiyojga qarab formatlash mumkin. O'qilishi oson ko'rinish uchun oddiy usul - asctime().

import time;

localtime = time.asctime(time.localtime(time.time()))
print("Current local time :", localtime)

Oyning kalendarini olish

calendar moduli yil va oy kalendarlarini chiqarish uchun turli metodlarni beradi. Bu yerda 2008-yil yanvar kalendarini chiqaramiz.

import calendar

cal = calendar.month(2008, 1)
print("Here is the calendar:")
print(cal)

Python'dagi time moduli

Python'da vaqt bilan ishlash va turli ko'rinishlar orasida o'zgartirish uchun time moduli bor. Quyida time modulidagi funksiyalar ro'yxati:

Python funksiyasi Izoh
time.altzone Lokal DST timezone offset'i (UTC'dan sekundlarda g'arbga). DST yo'q bo'lsa ishlatmang.
time.asctime([tupletime]) Time-tuple qabul qilib, 'Tue Dec 11 18:07:14 2008' kabi o'qilishi oson string qaytaradi.
time.process_time() Processor vaqtini sekundlarda float sifatida qaytaradi. Hisoblash xarajatlarini o'lchashda time.time() dan ko'ra foydaliroq.
time.ctime([secs]) asctime(localtime(secs)) ga o'xshaydi; argument bo'lmasa asctime() kabi.
time.gmtime([secs]) Epoch'dan sekundlarda berilgan qiymatni UTC time-tuple'ga aylantiradi. Eslatma: t.tm_isdst doim 0.
time.localtime([secs]) Epoch'dan sekundlarda berilgan qiymatni lokal time-tuple'ga aylantiradi (tm_isdst 0 yoki 1 bo'lishi mumkin).
time.mktime(tupletime) Lokal time-tuple qabul qilib, epoch'dan sekundlarda float qaytaradi.
time.sleep(secs) Berilgan sekundlar davomida bajarilishni to'xtatadi.
time.strftime(fmt[,tupletime]) Time-tuple'ni fmt formatiga ko'ra string ko'rinishiga o'tkazadi.
time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') str ni fmt bo'yicha parse qilib time-tuple qaytaradi.
time.time() Hozirgi vaqtni epoch'dan sekundlarda float sifatida qaytaradi.

Time modulida yana 2 ta muhim atribut bor:

Python atributi Izoh
time.timezone DST'siz lokal timezone'ning UTC'dan offset'i (sekundlarda).
time.tzname Lokal timezone nomlari juftligi (DST'siz va DST bilan).

Python'dagi calendar moduli

calendar moduli kalendar bilan bog'liq funksiyalarni taqdim etadi, jumladan oy yoki yil uchun matn ko'rinishidagi kalendar chiqarish.

Standart holatda hafta dushanbadan boshlanadi, yakshanba bilan tugaydi. Buni o'zgartirish uchun calendar.setfirstweekday() funksiyasini chaqiring.

Quyida calendar modulidagi funksiyalar ro'yxati:

Python funksiyasi Izoh
calendar.calendar(year,w=2,l=1,c=6) year uchun uch ustunli multiline string kalendar qaytaradi. w - sana kengligi, l - har hafta uchun qatorlar, c - ustunlar oralig'i.
calendar.firstweekday( ) Haftaning boshlanish kunini qaytaradi (default 0, ya'ni dushanba).
calendar.isleap(year) year kabisa yili bo'lsa True, aks holda False.
calendar.leapdays(y1,y2) (y1, y2) oralig'idagi kabisa kunlar sonini qaytaradi.
calendar.month(year,month,w=2,l=1) Berilgan oy/yil uchun multiline string kalendar qaytaradi.
calendar.monthcalendar(year,month) Oy uchun haftalar ro'yxatini qaytaradi; oydan tashqaridagi kunlar 0 bo'ladi.
calendar.monthrange(year,month) (1) oy boshidagi haftakuni kodi, (2) oydagi kunlar sonini qaytaradi.
calendar.setfirstweekday(weekday) Haftaning birinchi kunini weekday ga o'rnatadi (0 - dushanba, 6 - yakshanba).
calendar.timegm(tupletime) time.gmtime ning teskarisi: time-tuple'ni epoch sekundiga o'tkazadi.
calendar.weekday(year,month,day) Berilgan sana uchun haftakuni kodini qaytaradi.