logo

Modul datetime v Pythonu

V Pythonu nejsou datum a čas vlastní datové typy, ale modul s názvem Čas schůzky v Pythonu lze importovat pro práci s datem i časem. Modul Datetime v Pythonu je integrován v Pythonu, takže jej není třeba instalovat externě.

V tomto článku prozkoumáme Jak DateTime v Pythonu funguje a jaké jsou hlavní třídy modulu DateTime v Pythonu.

Obsah



lexikografický řád

Modul DateTime v Pythonu

Datum a čas v Pythonu modul poskytuje třídám práci s datem a časem. Tyto třídy poskytují několik funkcí pro práci s daty, časy a časovými intervaly. Date a DateTime jsou objekty v Pythonu, takže když s nimi manipulujete, manipulujete s objekty a ne s řetězci nebo časovými razítky.

Modul DateTime je rozdělen do 6 hlavních tříd –

  • datum – Idealizované naivní datum, za předpokladu, že aktuální gregoriánský kalendář vždy byl a vždy bude platný. Jeho atributy jsou rok, měsíc a den. můžete odkazovat - Python DateTime – třída data
  • čas – Idealizovaný čas, nezávislý na jakémkoli konkrétním dni, za předpokladu, že každý den má přesně 24*60*60 sekund. Jeho atributy jsou hodina, minuta, sekunda, mikrosekunda a tzinfo. Můžete odkazovat na - Python DateTime – třída času
  • čas schůzky – Jedná se o kombinaci data a času spolu s atributy rok, měsíc, den, hodina, minuta, sekunda, mikrosekunda a tzinfo. Můžete odkazovat na - Python DateTime – třída DateTime
  • časová delta – Trvání vyjadřující rozdíl mezi dvěma instancemi data, času nebo data a času na mikrosekundové rozlišení. Můžete odkazovat na - Python DateTime – třída Timedelta
  • tzinfo – Poskytuje informační objekty časové zóny. Můžete odkazovat na - Python – datetime.tzinfo()
  • časové pásmo – Třída, která implementuje abstraktní základní třídu tzinfo jako pevný posun od UTC (novinka ve verzi 3.2). Můžete odkazovat na - Zpracování časového pásma v Pythonu

Python Date Class

Třída date se používá k vytvoření instance datových objektů v Pythonu. Když je objekt této třídy konkretizován, představuje datum ve formátu YYYY-MM-DD . Konstruktor této třídy potřebuje tři povinné argumenty rok, měsíc a datum.

Syntaxe třídy Datum v Pythonu

class datetime.date(year, month, day)>

Argumenty musí být v následujícím rozsahu –

  • MINYEAR <= rok <= MAXYEAR
  • 1 <= měsíc <= 12
  • 1 <= den <= počet dní v daném měsíci a roce

Poznámka – Pokud argument není celé číslo, vyvolá TypeError a pokud je mimo rozsah, bude vyvolána ValueError.

Objekt Date představující data v Pythonu

Inicializace konstruktoru a předání argumentů ve formátu rok, měsíc a datum.

Python3




# Python program to> # demonstrate date class> # import the date class> from> datetime>import> date> my_date>=> date(>1996>,>12>,>11>)> print>(>'Date passed as argument is'>, my_date)> # Uncommenting my_date = date(1996, 12, 39)> # will raise an ValueError as it is> # outside range> # uncommenting my_date = date('1996', 12, 11)> # will raise a TypeError as a string is> # passed instead of integer>

>

>

Výstup:

Date passed as argument is 1996-12-11>
Traceback (most recent call last):  File '/home/ccabfb570d9bd1dcd11dc4fe55fd6ba2.py', line 14, in   my_date = date(1996, 12, 39) ValueError: day is out of range for month  Traceback (most recent call last):  File '/home/53b974e10651f1853eee3c004b48c481.py', line 18, in   my_date = date('1996', 12, 11) TypeError: an integer is required (got type str)>

Získejte aktuální datum

Pro vrácení aktuálního místního data se používá funkce today() třídy date. Funkce today() přichází s několika atributy (rok, měsíc a den). Tyto lze vytisknout jednotlivě.

Python3




# Python program to> # print current date> from> datetime>import> date> # calling the today> # function of date class> today>=> date.today()> print>(>'Today's date is'>, today)>

>

>

Výstup

Today's date is 2021-08-19>

Získejte dnešní rok, měsíc a datum

Atributy rok, měsíc a datum můžeme získat z objektu date pomocí atributu year, month a date třídy date.

Python3




from> datetime>import> date> # date object of today's date> today>=> date.today()> print>(>'Current year:'>, today.year)> print>(>'Current month:'>, today.month)> print>(>'Current day:'>, today.day)>

>

>

Výstup

Current year: 2021 Current month: 8 Current day: 19>

Získejte datum z časového razítka

Objekty data můžeme vytvořit z časových razítek y=pomocí metody fromtimestamp(). Časové razítko je počet sekund od 1. ledna 1970 v UTC do určitého data.

Python3




from> datetime>import> datetime> # Getting Datetime from timestamp> date_time>=> datetime.fromtimestamp(>1887639468>)> print>(>'Datetime from timestamp:'>, date_time)>

>

>

Výstup

Datetime from timestamp: 2029-10-25 16:17:48>

Převést datum na řetězec

Objekt data můžeme převést na reprezentaci řetězce pomocí dvou funkcí isoformat() a strftime().

Python3




from> datetime>import> date> > # calling the today> # function of date class> today>=> date.today()> > # Converting the date to the string> Str> => date.isoformat(today)> print>(>'String Representation'>,>Str>)> print>(>type>(>Str>))>

>

>

Výstup

String Representation 2021-08-19>

Seznam metod datové třídy

Název funkce

Popis

ctime() Vrátí řetězec představující datum
z isocalendar() Vrátí datum odpovídající kalendáři ISO
fromisoformat() Vrátí objekt data z řetězcové reprezentace data
odordinální() Vrátí objekt data z proleptického gregoriánského ordinálu, kde 1. leden roku 1 má ordinální 1
fromtimestamp() Vrátí objekt data z časového razítka POSIX
isocalendar() Vrátí n-tici rok, týden a den v týdnu
isoformat() Vrátí řetězcovou reprezentaci data
isoweekday() Vrátí den v týdnu jako celé číslo, kde pondělí je 1 a neděle je 7
nahradit() Změní hodnotu objektu data s daným parametrem
strftime() Vrátí řetězcovou reprezentaci data v daném formátu
timetuple() Vrátí objekt typu time.struct_time
dnes() Vrátí aktuální místní datum
toordinální() Vraťte proleptický gregoriánský ordinál data, kde 1. leden roku 1 má řadové číslo 1
všední den() Vrátí den v týdnu jako celé číslo, kde pondělí je 0 a neděle je 6

Třída Python Time

Časová třída vytváří časový objekt, který představuje místní čas nezávisle na jakémkoli dni.

Syntaxe konstruktoru:

class datetime.time(hodina=0, minuta=0, sekunda=0, mikrosekunda=0, tzinfo=Žádné, *, fold=0)

Všechny argumenty jsou volitelné. tzinfo může být Žádný, jinak musí být všechny atributy celočíselné v následujícím rozsahu –

  • 0 <= hodina < 24
  • 0 <= minuta < 60
  • 0 <= sekunda < 60
  • 0 <= mikrosekunda < 1000000
  • vložit [0, 1]

Příklad 1: Objekt Time představující čas v Pythonu

Python3




# Python program to> # demonstrate time class> from> datetime>import> time> # calling the constructor> my_time>=> time(>13>,>24>,>56>)> print>(>'Entered time'>, my_time)> # calling constructor with 1> # argument> my_time>=> time(minute>=>12>)> print>(>' Time with one argument'>, my_time)> # Calling constructor with> # 0 argument> my_time>=> time()> print>(>' Time without argument'>, my_time)> # Uncommenting time(hour = 26)> # will rase an ValueError as> # it is out of range> # uncommenting time(hour ='23')> # will raise TypeError as> # string is passed instead of int>

>

>

Výstup:

Entered time 13:24:56  Time with one argument 00:12:00  Time without argument 00:00:00>
Traceback (most recent call last):  File '/home/95ff83138a1b3e67731e57ec6dddef25.py', line 21, in   print(time(hour=26)) ValueError: hour must be in 0..23  Traceback (most recent call last):  File '/home/fcee9ba5615b0b74fc3ba39ec9a789fd.py', line 21, in   print(time(hour='23')) TypeError: an integer is required (got type str)>

Příklad 2: Získejte hodiny, minuty, sekundy a mikrosekundy

Po vytvoření časového objektu lze také samostatně vytisknout jeho atributy.

Python3




from> datetime>import> time> Time>=> time(>11>,>34>,>56>)> print>(>'hour ='>, Time.hour)> print>(>'minute ='>, Time.minute)> print>(>'second ='>, Time.second)> print>(>'microsecond ='>, Time.microsecond)>

>

>

Výstup:

hour = 11 minute = 34 second = 56 microsecond = 0>

Příklad 3: Převeďte objekt Time na String

Pomocí metody isoformat() můžeme převést objekt času na řetězec.

Python3




from> datetime>import> time> # Creating Time object> Time>=> time(>12>,>24>,>36>,>1212>)> # Converting Time object to string> Str> => Time.isoformat()> print>(>'String Representation:'>,>Str>)> print>(>type>(>Str>))>

>

>

Výstup

String Representation: 12:24:36.001212>

Seznam metod časové třídy

Název funkce

Popis

dst() Vrací tzinfo.dst() je tzinfo není Žádné
fromisoformat() Vrátí objekt time z řetězcové reprezentace času
isoformat() Vrátí řetězcovou reprezentaci času z objektu time
nahradit() Změní hodnotu objektu time s daným parametrem
strftime() Vrátí řetězcovou reprezentaci času v daném formátu
tzname() Vrací tzinfo.tzname() is tzinfo není Žádné
utcoffset() Vrací tzinfo.utcffsets() je tzinfo není Žádné

Třída Datetime v Pythonu

The třída DateTime obsahuje informace o datu a čase. Stejně jako objekt data, datum a čas předpokládá aktuální gregoriánský kalendář rozšířený v obou směrech; jako objekt času, datum a čas předpokládá, že každý den má přesně 3600*24 sekund.

Syntaxe konstruktoru:

class datetime.datetime(rok, měsíc, den, hodina=0, minuta=0, sekunda=0, mikrosekunda=0, tzinfo=Žádné, *, fold=0)

Argumenty roku, měsíce a dne jsou povinné. tzinfo může být Žádné, všechny atributy musí být celé číslo v následujícím rozsahu –

  • MINYEAR <= rok <= MAXYEAR
  • 1 <= měsíc <= 12
  • 1 <= den <= počet dní v daném měsíci a roce
  • 0 <= hodina < 24
  • 0 <= minuta < 60
  • 0 <= sekunda < 60
  • 0 <= mikrosekunda < 1000000
  • vložit [0, 1]

Poznámka – Předání argumentu jiného než celé číslo vyvolá TypeError a předání argumentů mimo rozsah vyvolá hodnotu ValueError.

Objekt DateTime představující DateTime v Pythonu

Python3




# Python program to> # demonstrate datetime object> from> datetime>import> datetime> # Initializing constructor> a>=> datetime(>1999>,>12>,>12>)> print>(a)> # Initializing constructor> # with time parameters as well> a>=> datetime(>1999>,>12>,>12>,>12>,>12>,>12>,>342380>)> print>(a)>

>

>

Výstup:

1999-12-12 00:00:00 1999-12-12 12:12:12.342380>

Získejte rok, měsíc, hodinu, minutu a časové razítko

Po vytvoření objektu DateTime lze také samostatně vytisknout jeho atributy.

Python3




from> datetime>import> datetime> a>=> datetime(>1999>,>12>,>12>,>12>,>12>,>12>)> print>(>'year ='>, a.year)> print>(>'month ='>, a.month)> print>(>'hour ='>, a.hour)> print>(>'minute ='>, a.minute)> print>(>'timestamp ='>, a.timestamp())>

>

>

Výstup:

year = 1999 month = 12 hour = 12 minute = 12 timestamp = 945000732.0>

Aktuální datum a čas

Aktuální datum a čas můžete vytisknout pomocí funkce Datetime.now(). Funkce now() vrací aktuální místní datum a čas.

Python3




from> datetime>import> datetime> # Calling now() function> today>=> datetime.now()> print>(>'Current date and time is'>, today)>

>

>

Výstup:

Current date and time is 2019-10-25 11:12:11.289834>

Převeďte datum a čas Pythonu na řetězec

Datetime můžeme převést na řetězec v Pythonu pomocí datetime.strftime a metody datetime.isoformat.

Python3




from> datetime>import> datetime as dt> # Getting current date and time> now>=> dt.now()> string>=> dt.isoformat(now)> print>(string)> print>(>type>(string))>

>

>

Výstup

2021-08-19T18:13:25.346259>

Seznam metod třídy Datetime

Název funkce

Popis

astimezone() Vrátí objekt DateTime obsahující informace o časovém pásmu.
kombajn() Zkombinuje objekty data a času a vrátí objekt DateTime
ctime() Vrátí řetězcovou reprezentaci data a času
datum() Vraťte objekt třídy Date
fromisoformat() Vrátí objekt datetime z řetězcové reprezentace data a času
odordinální() Vrátí objekt data z proleptické gregoriánské ordinály, kde 1. leden roku 1 má ordinální 1. Hodina, minuta, sekunda a mikrosekunda jsou 0
fromtimestamp() Datum a čas návratu z časového razítka POSIX
isocalendar() Vrátí n-tici rok, týden a den v týdnu
isoformat() Vrátí řetězcovou reprezentaci data a času
isoweekday() Vrátí den v týdnu jako celé číslo, kde pondělí je 1 a neděle je 7
Nyní() Vrátí aktuální místní datum a čas s parametrem tz
nahradit() Změní specifické atributy objektu DateTime
strftime() Vrátí řetězcovou reprezentaci objektu DateTime v daném formátu
strptime() Vrátí objekt DateTime odpovídající řetězci data
čas() Vraťte objekt třídy Time
timetuple() Vrátí objekt typu time.struct_time
timetz() Vraťte objekt třídy Time
dnes() Vraťte místní datum a čas s tzinfo jako Žádné
toordinální() Vraťte proleptický gregoriánský ordinál data, kde 1. leden roku 1 má řadové číslo 1
tzname() Vrátí název časového pásma
utcfromtimestamp() Vraťte UTC z časového razítka POSIX
utcoffset() Vrátí offset UTC
utcnow() Vrátit aktuální datum a čas UTC
všední den() Vrátí den v týdnu jako celé číslo, kde pondělí je 0 a neděle je 6

Třída Python Timedelta

Třída timedelta v Pythonu se používá pro výpočet rozdílů v datech a lze ji také použít pro manipulaci s datem v Pythonu. Je to jeden z nejjednodušších způsobů, jak provádět manipulace s datem.

Syntaxe konstruktoru:

class datetime.timedelta(dny=0, sekundy=0, mikrosekundy=0, milisekundy=0, minuty=0, hodiny=0, týdny=0)
Vrácení: Datum

Přidejte dny do objektu DateTime

Ukázka funkce timedelta

0,04 jako zlomek

Python3




from> datetime>import> datetime, timedelta> # Using current time> ini_time_for_now>=> datetime.now()> # printing initial_date> print>(>'initial_date'>,>str>(ini_time_for_now))> # Calculating future dates> # for two years> future_date_after_2yrs>=> ini_time_for_now>+> timedelta(days>=>730>)> future_date_after_2days>=> ini_time_for_now>+> timedelta(days>=>2>)> # printing calculated future_dates> print>(>'future_date_after_2yrs:'>,>str>(future_date_after_2yrs))> print>(>'future_date_after_2days:'>,>str>(future_date_after_2days))>

>

>

Výstup:

initial_date 2019-10-25 12:01:01.227848 future_date_after_2yrs: 2021-10-24 12:01:01.227848 future_date_after_2days: 2019-10-27 12:01:01.227848>

Rozdíl mezi dvěma daty a časy

Pomocí této třídy lze také najít rozdíly data a času.

Python3




# Timedelta function demonstration> from> datetime>import> datetime, timedelta> # Using current time> ini_time_for_now>=> datetime.now()> # printing initial_date> print>(>'initial_date'>,>str>(ini_time_for_now))> # Some another datetime> new_final_time>=> ini_time_for_now>+> > >timedelta(days>=>2>)> # printing new final_date> print>(>'new_final_time'>,>str>(new_final_time))> # printing calculated past_dates> print>(>'Time difference:'>,>str>(new_final_time>-> >ini_time_for_now))>

>

>

Výstup:

initial_date 2019-10-25 12:02:32.799814 new_final_time 2019-10-27 12:02:32.799814 Time difference: 2 days, 0:00:00>

Operace podporované třídou Timedelta

Operátor

Popis

Sčítání (+) Přidá a vrátí dva objekty timedelta
Odečítání (-) Odečte a vrátí dva objekty timedelta
Násobení (*) Vynásobí objekt timedelta s float nebo int
Divize (/) Rozdělí objekt timedelta pomocí float nebo int
Rozdělení podlahy (//) Rozdělí objekt timedelta pomocí float nebo int a vrátí hodnotu int spodní hranice výstupu
Modul (%) Rozdělí dva objekty timedelta a vrátí zbytek
+ (časová delta) Vrátí stejný objekt timedelta
-(časová delta) Vrátí výslednici -1*timedelta
abs (časová delta) Vrátí +(timedelta), pokud timedelta.days> 1=0, jinak vrátí -(timedelta)
str (časová delta) Vrátí řetězec ve tvaru (+/-) den[s], HH:MM:SS.UUUUUU
repr(časová delta) Vrátí reprezentaci řetězce ve formě volání konstruktoru

Formát DateTime v Pythonu

Formátování DateTime může být velmi potřebné, protože reprezentace data se může místo od místa lišit. V některých zemích to může být yyyy-mm-dd a v jiných zemích to může být dd-mm-yyyy. K formátování Pythonu Datetime lze použít funkce strptime a strftime.

Python Datetime strftime

Metoda strftime() převede daný objekt data, času nebo DateTime na řetězcovou reprezentaci daného formátu.

Formát data a času v Pythonu

Pythonský program pro demonstraci funkce strftime().

Python3




from> datetime>import> datetime as dt> # Getting current date and time> now>=> dt.now()> print>(>'Without formatting'>, now)> # Example 1> s>=> now.strftime(>'%A %m %-Y'>)> print>(>' Example 1:'>, s)> # Example 2> s>=> now.strftime(>'%a %-m %y'>)> print>(>' Example 2:'>, s)> # Example 3> s>=> now.strftime(>'%-I %p %S'>)> print>(>' Example 3:'>, s)> # Example 4> s>=> now.strftime(>'%H:%M:%S'>)> print>(>' Example 4:'>, s)>

>

>

Výstup

Without formatting 2021-08-19 18:16:25.881661 Example 1: Thursday 08 2021 Example 2: Thu 8 21 Example 3: 6 PM 25 Example 4: 18:16:25>

Poznámka: Další informace viz metoda strftime(). .

Python DateTime strptime

Strptime() vytvoří z daného řetězce objekt DateTime.

Příklad: DateTime strptime

Python3




# import datetime module from datetime> from> datetime>import> datetime> > # consider the time stamps from a list in string> # format DD/MM/YY H:M:S.micros> time_data>=> [>'25/05/99 02:35:8.023'>,>'26/05/99 12:45:0.003'>,> >'27/05/99 07:35:5.523'>,>'28/05/99 05:15:55.523'>]> > # format the string in the given format : day/month/year> # hours/minutes/seconds-micro seconds> format_data>=> '%d/%m/%y %H:%M:%S.%f'> > # Using strptime with datetime we will format string> # into datetime> for> i>in> time_data:> >print>(datetime.strptime(i, format_data))>

>

>

Výstup

1999-05-25 02:35:08.023000 1999-05-26 12:45:00.003000 1999-05-27 07:35:05.523000 1999-05-28 05:15:55.523000>

Python DateTime.tzinfo()

The datetime.now() funkce neobsahuje žádné informace o časových pásmech. Využívá pouze aktuální systémový čas. Tzinfo je abstraktní základní třída v Pythonu. Nelze jej přímo vytvořit. Konkrétní podtřída se musí odvozovat od této abstraktní třídy a implementovat metody, které nabízí.

Seznam objektů DateTime.tzinfo() Pythonu

Název funkce

Popis

dst() Vrací tzinfo.dst() je tzinfo není Žádné
fromutc() Účelem této funkce je upravit datum a čas,
vrácení ekvivalentního DateTime ve vlastním místním čase.
tzname() Vrací tzinfo.tzname() is tzinfo není Žádné
utcoffset() Vrací tzinfo.utcffsets() je tzinfo není Žádné

Příklad

Instance třídy tzinfo může být poskytnuta konstruktorům objektu DateTime a time. Používá se ve scénářích, jako je převod místního času na UTC nebo účtování letního času.

Python3




import> datetime as dt> from> dateutil>import> tz> tz_string>=> dt.datetime.now(dt.timezone.utc).astimezone().tzname()> print>(>'datetime.now() :'>, tz_string)> NYC>=> tz.gettz(>'Europe / Berlin'>)> dt1>=> dt.datetime(>2022>,>5>,>21>,>12>,>0>)> dt2>=> dt.datetime(>2022>,>12>,>21>,>12>,>0>, tzinfo>=>NYC)> print>(>'Naive Object :'>, dt1.tzname())> print>(>'Aware Object :'>, dt2.tzname())>

>

>

Výstup:

datetime.now() : IST Naive Object : None Aware Object : None>

Časové pásmo Python DateTime

Časová pásma v DateTime lze použít v případě, kdy chcete zobrazit čas podle časového pásma konkrétní oblasti. To lze provést pomocí pytz modul z Pythonu. Tento modul slouží funkcím převodu data a času a pomáhá uživatelům obsluhující mezinárodní klientské základny.

Python3




from> datetime>import> datetime> from> pytz>import> timezone> format> => '%Y-%m-%d %H:%M:%S %Z%z'> # Current time in UTC> now_utc>=> datetime.now(timezone(>'UTC'>))> print>(now_utc.strftime(>format>))> timezones>=> [>'Asia/Kolkata'>,>'Europe/Kiev'>,>'America/New_York'>]> for> tzone>in> timezones:> ># Convert to Asia/Kolkata time zone> >now_asia>=> now_utc.astimezone(timezone(tzone))> >print>(now_asia.strftime(>format>))>

>

>

Výstup

2021-08-19 18:27:28 UTC+0000 2021-08-19 23:57:28 IST+0530 2021-08-19 21:27:28 EEST+0300 2021-08-19 14:27:28 EDT-0400>