Python DateTime, TimeDelta, Strftime(Format) s příklady

In Python, datum, čas a datum a čas class poskytuje řadu funkcí pro práci s daty, časy a časovými intervaly. Datum a datum a čas v Python jsou objekty, takže když s nimi manipulujete, ve skutečnosti manipulujete s objekty a ne s řetězci nebo časovými razítky. Kdykoli manipulujete s daty nebo časem, musíte importovat funkci datetime.

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.

Použijte třídu Date & DateTime

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.

Použijte třídu Date & DateTime

Krok 3) Dále vytiskneme datum a spustíme kód.

Použijte třídu Date & DateTime

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

Vytisknout datum pomocí date.today()

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.

Vytisknout datum pomocí date.today()

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.

Python Aktuální datum a čas

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.

Python Aktuální datum a čas

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“.

Python Aktuální datum a čas

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.

Formátovat výstup data a času pomocí Strftime()

  • 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

Formátovat výstup data a času pomocí Strftime()

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.

Formátovat výstup data a času pomocí Strftime()

Pokud uvnitř funkce strftime nahradíte (%a) velkým A, tj. (%A), výstup se vytiskne jako „Firday“ namísto pouhé zkratky „Pá“.

Formátovat výstup data a času pomocí Strftime()

Krok 4) Pomocí funkce „Strftime“ můžeme také získat místní systémový čas, datum nebo obojí.

  1. %C- označuje místní datum a čas
  2. %x- označuje místní datum
  3. %X- označuje místní čas

Formátovat výstup data a času pomocí Strftime()

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.

Formátovat výstup data a času pomocí Strftime()

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

Objekty Timedelta

  1. Napište příkaz importu pro timedelta
  2. Nyní napište kód pro tisk objektu z časové delty, jak je znázorněno na snímku obrazovky
  3. 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

Objekty Timedelta

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í.

Objekty Timedelta

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

Objekty Timedelta

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

Objekty Timedelta

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