Python DateTime, TimeDelta, Strftime(Format) s příklady
Kurzy podle data a času v Python jsou rozděleny do 5 hlavních tříd.
- datum – manipulace pouze s datem (měsíc, den, rok)
- čas – Čas nezávislý na dni (hodina, minuta, sekunda, mikrosekunda)
- datetime – kombinace času a data (měsíc, den, rok, hodina, sekunda, mikrosekunda)
- timedelta— Doba trvání času používaná pro manipulaci s daty
- tzinfo— Abstraktní třída pro práci s časovými pásmy
Jak používat třídu Date & DateTime
Krok 1) Než spustíte kód pro formát data a času v Python, je důležité, abyste importovali soubor Python moduly data a času, jak je znázorněno na obrázku níže.
Tyto příkazy importu jsou předdefinovanými částmi funkcí v Python knihovna, která vám umožní manipulovat s daty a časy, aniž byste museli psát jakýkoli kód.
Před provedením zvažte následující body Python kód formátu data a času
from datetime import date
Tento řádek říká Python interpret pro import třídy data z modulu datetime do Python. Kód pro tuto funkci data bohužel nepíšeme, pouze jej importujeme pro naše použití
Krok 2) Dále vytvoříme instanci objektu date.
Krok 3) Dále vytiskneme datum a spustíme kód.
Výstup je podle očekávání.
Vytisknout datum pomocí date.today()
date.today
funkce má několik vlastností spojených s ní. Můžeme tisknout jednotlivé dny/měsíce/roky a mnoho dalších věcí
Podívejme se na příklad
Dnešní číslo dne v týdnu
Funkce date.today() vám také poskytne číslo dne v týdnu. Zde je tabulka pracovních dnů, která začíná Monday jako 0 a v neděli jako 6
Den | Číslo dne v týdnu |
---|---|
Monday | 0 |
Úterý | 1 |
Středa | 2 |
Čtvrtek | 3 |
Pátek - Sobota | 4 |
Sobota | 5 |
NEDĚLE | 6 |
Weekday Number je užitečné pro pole, jejichž index závisí na dni v týdnu.
Python Aktuální datum a čas: nyní() dnes()
Krok 1) Stejně jako Date Objects můžeme také použít "OBJECTS DATETIME" in Python. Python objekty data a času dávají datum spolu s časem v hodiny, minuty, sekundy a milisekundy.
Když spustíme kód pro datum a čas, poskytne výstup s aktuálním datem a časem.
Krok 2) Pomocí „DATETIME OBJECT“ můžete také volat časovou třídu.
Předpokládejme, že chceme vytisknout pouze aktuální čas bez data.
t = datetime.time(datetime.now())
- Časovou třídu jsme importovali. Přiřadíme mu aktuální hodnotu času pomocí datetime.now()
- Proměnné t přiřazujeme hodnotu aktuálního času.
A tohle mi dá akorát čas. Pojďme tedy spustit tento program.
Dobře, takže vidíte, že tady mám datum a čas. A pak další řádek, mám čas sám pro sebe
Krok 3) Použijeme náš indexátor pracovního dne na náš seznam polí ve všední den, abychom věděli, který den je dnes
- Operátoru pracovních dnů (wd) je přiřazeno číslo od (0-6) podle toho, jaký je aktuální den v týdnu. Zde jsme deklarovali pole seznamu pro dny (Po, Út, St…Ne).
- Pomocí této hodnoty indexu zjistíte, který den je. V našem případě je to #2 a představuje středu, takže na výstupu se vypíše „Co je středa“.
Zde je úplný kód pro získání aktuálního data a času pomocí datetime nyní
from datetime import date from datetime import time from datetime import datetime def main(): ##DATETIME OBJECTS #Get today's date from datetime class today=datetime.now() #print (today) # Get the current time #t = datetime.time(datetime.now()) #print "The current time is", t #weekday returns 0 (monday) through 6 (sunday) wd=date.weekday(today) #Days start at 0 for monday days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"] print("Today is day number %d" % wd) print("which is a " + days[wd]) if __name__== "__main__": main()
Jak formátovat výstup data a času pomocí Strftime()
Nyní jsme se naučili, jak používat datum a čas objekt v Python. Postoupíme o krok dále a naučíme se, jak používat funkci formátování k formátování času a data.
Krok 1) Nejprve uvidíme jednoduchý krok, jak formátovat rok. Lépe je to pochopit na příkladu.
- Použili jsme „funkce strftime" pro formátování.
- Tato funkce používá různé kontrolní kód dát výstup.
- Každý řídicí kód připomíná různé parametry, jako je rok, měsíc, den v týdnu a datum [(%y/%Y – rok), (%a/%A- den v týdnu), (%b/%B- měsíc), (%d – den v měsíci)] .
- V našem případě ano („%Y“) který připomíná rok, vytiskne celý rok se stoletím (např. 2018).
Krok 2) Nyní, pokud nahradíte (“%Y”) malými písmeny, tj. ( “%y) a provedete kód, výstup zobrazí pouze (18) a ne (2018). Století roku se nezobrazí tak, jak je znázorněno na snímku obrazovky níže
Krok 3) Funkce Strf může samostatně deklarovat datum, den, měsíc a rok. Také s malými změnami v řídicím kódu ve funkci strftime můžete formátovat styl textu.
Pokud uvnitř funkce strftime nahradíte (%a) velkým A, tj. (%A), výstup se vytiskne jako „Firday“ namísto pouhé zkratky „Pá“.
Krok 4) Pomocí funkce „Strftime“ můžeme také získat místní systémový čas, datum nebo obojí.
- %C- označuje místní datum a čas
- %x- označuje místní datum
- %X- označuje místní čas
Ve výstupu můžete vidět výsledek podle očekávání
Krok 5) „Funkce strftime“ umožňuje volat čas v libovolném formátu 24 hodin nebo 12 hodin.
Pouhým definováním řídicího kódu, jako je %I/H pro hodinu, % M pro minutu, %S pro sekundu, lze volat čas pro různé formáty
12 hodin čas je deklarován [print now.strftime(“%I:%M:%S %p) ]
24 hodin čas je deklarován [print now.strftime(“%H:%M”)]
Zde je kompletní kód pro převod datetime na objekt String.
# #Example file for formatting time and date output # from datetime import datetime def main(): #Times and dates can be formatted using a set of predefined string #Control codes now= datetime.now() #get the current date and time #%c - local date and time, %x-local's date, %X- local's time print(now.strftime("%c")) print(now.strftime("%x")) print(now.strftime("%X")) ##### Time Formatting #### #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM print(now.strftime("%I:%M:%S %p")) # 12-Hour:Minute:Second:AM print(now.strftime("%H:%M")) # 24-Hour:Minute if __name__== "__main__": main()
V čem je Timedelta Python?
Časová delta v Python je objekt, který představuje dobu trvání. Používá se hlavně k výpočtu doby trvání mezi dvěma daty a časy. Používá se také pro načtení objektu s určitým delta datem a časem. Objekt timedelta podporuje matematické operace jako sčítání, odčítání, násobení, dělení atd.
Jak používat objekty Timedelta
S Python objektů timedelta, můžete odhadnout čas pro budoucnost i minulost. Jinými slovy, je to časový úsek pro předpovídání jakéhokoli zvláštního dne, data nebo času.
Pamatujte, že tato funkce neslouží k vytištění času nebo data, ale k VÝPOČTU o budoucnosti nebo minulosti. Podívejme se na Python příklad timedelta, abyste to lépe pochopili.
Krok 1) Chcete-li spustit Timedelta Objects, musíte nejprve deklarovat příkaz import a poté spustit kód
- Napište příkaz importu pro timedelta
- Nyní napište kód pro tisk objektu z časové delty, jak je znázorněno na snímku obrazovky
- Spusťte kód. Časová delta představuje rozpětí 365 dní, 8 hodin a 15 minut a tiskne se stejně
Matoucí? Další krok pomůže -
Krok 2) Pojďme zjistit dnešní datum a čas, abychom zkontrolovali, zda naše prohlášení o importu funguje dobře. Když je kód spuštěn, vytiskne dnešní datum, což znamená, že náš příkaz k importu funguje dobře
Krok 3) Uvidíme, jak můžeme od nynějška získat datum za rok prostřednictvím objektů delta. Když spustíme kód, dává výstup podle očekávání.
Krok 4) Další příklad, jak lze časový rozdíl použít k výpočtu budoucího data z aktuálního data a času
Krok 5) Podívejme se na složitější příklad. Chtěl bych zjistit, kolik dní po Novém roce. Zde je návod, jak budeme postupovat
- Pomocí today= date.today() získáme dnešní datum
- Víme, že nový rok je vždy 1. ledna, ale rok může být jiný. Pomocí nyd= date(dnes.rok,1,1) uložíme nový rok do proměnné nyd
- if nyd < dnes: porovnává, zda je aktuální datum větší než nový rok. Pokud ano, vstoupí do smyčky while
- ((today-nyd).days) udává rozdíl mezi aktuálním datem a novým rokem ve DAYS
Výstup ukazuje, že „Nový rok již uplynul před 11 dny“.
Zde je kompletní pracovní kód
# # Example file for working with timedelta objects # from datetime import date from datetime import time from datetime import datetime from datetime import timedelta # construct a basic timedelta and print it print (timedelta(days=365, hours=8, minutes=15)) # print today's date print ("today is: " + str(datetime.now())) # print today's date one year from now print ("one year from now it will be:" + str(datetime.now() + timedelta(days=365))) # create a timedelta that uses more than one argument # print (in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4))) # How many days until New Year's Day? today = date.today() # get todays date nyd = date(today.year, 1, 1) # get New Year Day for the same year # use date comparison to see if New Year Day has already gone for this year # if it has, use the replace() function to get the date for next year if nyd < today: print ("New Year day is already went by %d days ago" % ((today - nyd).days))
Python 2 Příklad
from datetime import date from datetime import time from datetime import datetime def main(): ##DATETIME OBJECTS #Get today's date from datetime class today=datetime.now() #print today # Get the current time #t = datetime.time(datetime.now()) #print "The current time is", t #weekday returns 0 (monday) through 6 (sunday) wd = date.weekday(today) #Days start at 0 for monday days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"] print "Today is day number %d" % wd print "which is a " + days[wd] if __name__== "__main__": main()
# #Example file for formatting time and date output # from datetime import datetime def main(): #Times and dates can be formatted using a set of predefined string #Control codes now= datetime.now() #get the current date and time #%c - local date and time, %x-local's date, %X- local's time print now.strftime("%c") print now.strftime("%x") print now.strftime("%X") ##### Time Formatting #### #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM print now.strftime("%I:%M:%S %p") # 12-Hour:Minute:Second:AM print now.strftime("%H:%M") # 24-Hour:Minute if __name__== "__main__": main()
# # Example file for working with timedelta objects # from datetime import date from datetime import time from datetime import datetime from datetime import timedelta # construct a basic timedelta and print it print timedelta(days=365, hours=8, minutes=15) # print today's date print "today is: " + str(datetime.now()) # print today's date one year from now print "one year from now it will be:" + str(datetime.now() + timedelta(days=365)) # create a timedelta that uses more than one argument # print "in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4)) # How many days until New Year's Day? today = date.today() # get todays date nyd = date(today.year, 1, 1) # get New Year Day for the same year # use date comparison to see if New Year Day has already gone for this year # if it has, use the replace() function to get the date for next year if nyd < today: print "New Year day is already went by %d days ago" % ((today - nyd).days)
Shrnutí
Pro manipulaci s daty a časy jednoduchými i komplexními způsoby modul datetime dodává různé třídy nebo kategorie
- datum – manipulace pouze s datem (měsíc, den, rok)
- čas – Čas nezávislý na dni (hodina, minuta, sekunda, mikrosekunda)
- datetime – kombinace času a data (měsíc, den, rok, hodina, sekunda, mikrosekunda)
- timedelta— Doba trvání času používaná pro manipulaci s daty
- tzinfo— Abstraktní třída pro práci s časovými pásmy
Použití objektů datetime
- Importování objektů datetime před spuštěním kódu je povinné
- Použití funkce date.today pro tisk jednotlivého data/měsíce/roku a také indexování dne
- Použití objektu date.time k získání času v hodinách, minutách, sekundách a milisekundách
Formátování časového limitu pomocí funkce „str f time“
- Pro změnu formátu roku použijte funkci „str f time“.
- Tisknout den, datum, měsíc a rok samostatně,
- Doba volání pro jakýkoli formát 12 hodin nebo 24 hodin
Objekty Timedelta
- Pomocí objektů timedelta můžete odhadnout čas pro budoucnost i minulost
- Vypočítejte celkový počet dní zbývajících pro zvláštní den (narozeniny) od aktuálního času
- Vypočítejte celkový počet uplynulých dnů pro zvláštní den (narozeniny) od aktuálního času