V pythone často potrebujeme pracovať s časom. Na to má python integrovaný modul datetime.
Napríklad potrebujeme získať aktuálny čas a dátum, alebo len dátum:
from datetime import datetime
from datetime import date
# priradíme do premennej aktuálny čas a dátum
current_time = datetime.now()
# priradíme do premennej aktuálny dátum
current_date = date.today()
print(current_time)
print(current_date)
2023-04-05 08:36:57.483044
2023-04-05
Spomedzi všetkých atribútov modulu datetime sú najbežnejšie používané triedy v module datetime:
datetime.datetime
– predstavuje jeden časový bod vrátane dátumu a času.datetime.date
– predstavuje dátum (rok, mesiac a deň) bez času.datetime.time
– predstavuje čas (hodinu, minútu, sekundu a mikrosekundu) bez dátumu.datetime.timedelta
– predstavuje trvanie, ktoré možno použiť na vykonanie aritmetiky s objektmi dátumu a času.
V module datetime je možnosť nielen pracovať s aktuálnym časom, ale aj prevádzať, alebo zadávať čas, poprípade dátum.
from datetime import date
from datetime import time
d = date(2023, 4, 5)
#time(hour, minute and second)
t = time(10, 25, 30)
print(d)
print(t)
2023-04-05
10:25:30
Ďalší príklad pre prácu z časom:
from datetime import time
a = time(9, 33, 59)
print("Hodiny =", a.hour)
print("Minúty =", a.minute)
print("Sekundy =", a.second)
Hodiny = 9
Minúty = 33
Sekundy = 59
Timestamp – časová pečiatka
V programovacích jazykoch sa bežne používa takzvaná časová pečiatka. Je to to vlastne časový úsek. V Pythone môžeme získať časovú pečiatku udalosti s presnosťou milisekúnd. Unixová časová pečiatka je počet sekúnd medzi konkrétnym dátumom a 1. januárom 1970 v UTC. Vyskúšajte nasledujúci kus kódu na ktorom to veľmi rýchlo pochopíte:
from datetime import datetime
from time import sleep
for i in range(20):
# metóda now nám vráti aktuálny čas a dátum, ktorý následne zmeníme na časovú pečiatku pomocou
# metódy timestamp(), potom to stačí priradiť do premennej a vyprintovať
timestamp = datetime.now().timestamp()
print("timestamp =", timestamp)
# funkcia sleep pozastaví program na jednu sekundu
sleep(1)
timestamp = 1680679798.262351
timestamp = 1680679799.286714
timestamp = 1680679800.297227
...
timestamp = 1680679815.641281
timestamp = 1680679816.65587
timestamp = 1680679817.68242
Využíva sa častokrát pre jednoduchú prácu z časom napríklad pri zápise času do databázy.
Ďalšou možnosťou zápisu a práce s časom je timedelta
Objekt timedelta
predstavuje rozdiel medzi dvoma dátumami alebo časmi.
trieda datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
Všetky argumenty sú nepovinné a ich predvolená hodnota je 0. Argumenty môžu byť celé čísla alebo plávajúce čísla a môžu byť kladné alebo záporné.
from datetime import datetime, date
# použitie date()
t1 = date(year = 2018, month = 7, day = 12)
t2 = date(year = 2017, month = 12, day = 23)
# rozdiel medzi dátumami
t3 = t1 - t2
print("t3 =", t3)
# použitie datetime()
t4 = datetime(year = 2022, month = 8, day = 11, hour = 7, minute = 9, second = 33)
t5 = datetime(year = 2023, month = 6, day = 10, hour = 5, minute = 55, second = 13)
# rozdiel medzi časom
t6 = t4 - t5
print("t6 =", t6)
print("Typ t3 =", type(t3))
print("Typ t6 =", type(t6))
t3 = 201 days, 0:00:00
t6 = -303 days, 1:14:20
Typ t3 = <class 'datetime.timedelta'>
Typ t6 = <class 'datetime.timedelta'>
Toto sú základné metódy práce z časom, určite sa treba pozrieť na ďalší modul pre prácu z časom a to je strftime()
a strptime()
.