logo

Python modul datetime

V Pythone dátum a čas nie sú vlastné dátové typy, ale modul s názvom Dátum Čas v Pythone je možné importovať tak, aby pracovalo s dátumom aj časom. Modul Datetime v Pythone je zabudovaný v Pythone, takže ho nie je potrebné inštalovať externe.

V tomto článku preskúmame Ako DateTime v Pythone funguje a aké sú hlavné triedy modulu DateTime v Pythone.

Obsah



Modul DateTime v Pythone

Dátum a čas v Pythone modul poskytuje triedam prácu s dátumom a časom. Tieto triedy poskytujú niekoľko funkcií na prácu s dátumami, časmi a časovými intervalmi. Date a DateTime sú objekty v Pythone, takže keď s nimi manipulujete, manipulujete s objektmi a nie s reťazcami alebo časovými pečiatkami.

Modul DateTime je kategorizovaný do 6 hlavných tried –

  • dátum – Idealizovaný naivný dátum za predpokladu, že aktuálny gregoriánsky kalendár vždy bol a vždy bude platný. Jeho atribútmi sú rok, mesiac a deň. môžete odkazovať na - Python DateTime – trieda dátumu
  • čas – Idealizovaný čas, nezávislý od konkrétneho dňa, za predpokladu, že každý deň má presne 24*60*60 sekúnd. Jeho atribúty sú hodina, minúta, sekunda, mikrosekunda a tzinfo. Môžete sa obrátiť na - Python DateTime – Časová trieda
  • Dátum Čas – Ide o kombináciu dátumu a času spolu s atribútmi rok, mesiac, deň, hodina, minúta, sekunda, mikrosekunda a tzinfo. Môžete sa obrátiť na - Python DateTime – trieda DateTime
  • časová delta – Trvanie vyjadrujúce rozdiel medzi dvomi inštanciami dátumu, času alebo dátumu a času na mikrosekundové rozlíšenie. Môžete sa obrátiť na - Python DateTime – trieda Timedelta
  • tzinfo – Poskytuje informačné objekty časových pásiem. Môžete sa obrátiť na - Python – datetime.tzinfo()
  • časové pásmo – Trieda, ktorá implementuje abstraktnú základnú triedu tzinfo ako pevnú odchýlku od UTC (novinka vo verzii 3.2). Môžete sa obrátiť na - Spracovanie časového pásma v Pythone

Dátumová trieda Pythonu

Trieda dátumu sa používa na vytvorenie inštancie dátumových objektov v Pythone. Keď sa vytvorí inštancia objektu tejto triedy, predstavuje dátum vo formáte RRRR-MM-DD . Konštruktor tejto triedy potrebuje tri povinné argumenty rok, mesiac a dátum.

Syntax triedy Date v Pythone

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

Argumenty musia byť v nasledujúcom rozsahu –

  • MINYEAR <= rok <= MAXYEAR
  • 1 <= mesiac <= 12
  • 1 <= deň <= počet dní v danom mesiaci a roku

Poznámka – Ak argument nie je celé číslo, vyvolá TypeError a ak je mimo rozsahu, vyvolá sa hodnota ValueError.

Objekt dátumu predstavujúci údaje v Pythone

Inicializácia konštruktora a odovzdanie argumentov vo formáte rok, mesiac a dátum.

Python3

príklady programovania v pythone




# 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ýkon:

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ískajte aktuálny dátum

Na vrátenie aktuálneho miestneho dátumu sa používa funkcia dnes() triedy dátumu. Funkcia today() prichádza s niekoľkými atribútmi (rok, mesiac a deň). Tieto je možné vytlačiť jednotlivo.

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ýkon

Today's date is 2021-08-19>

Získajte dnešný rok, mesiac a dátum

Atribúty rok, mesiac a dátum môžeme získať z objektu dátumu pomocou atribútu rok, mesiac a dátum triedy dátumu.

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ýkon

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

Získajte dátum z časovej pečiatky

Objekty dátumu môžeme vytvárať z časových pečiatok y=pomocou metódy fromtimestamp(). Časová pečiatka je počet sekúnd od 1. januára 1970 v UTC do konkrétneho dátumu.

Python3




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

>

>

Výkon

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

Previesť dátum na reťazec

Objekt dátumu môžeme previesť na reprezentáciu reťazca pomocou dvoch funkcií 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>))>

>

java sa vytrhne zo slučky

>

Výkon

String Representation 2021-08-19>

Zoznam metód dátumovej triedy

Názov funkcie

Popis

ctime() Vráti reťazec predstavujúci dátum
z izokalendaru() Vráti dátum zodpovedajúci kalendáru ISO
fromisoformat() Vráti objekt dátumu z reťazcovej reprezentácie dátumu
odordinálne() Vráti objekt dátumu z proleptického gregoriánskeho ordinálu, kde 1. január roku 1 má ordinálnu 1
fromtimestamp() Vráti objekt dátumu z časovej pečiatky POSIX
izokalendár() Vráti n-ticu rok, týždeň a deň v týždni
izoformát() Vráti reťazcovú reprezentáciu dátumu
isoweekday() Vráti deň v týždni ako celé číslo, kde pondelok je 1 a nedeľa je 7
nahradiť () Zmení hodnotu objektu dátumu s daným parametrom
strftime() Vráti reťazcovú reprezentáciu dátumu v danom formáte
timetuple() Vráti objekt typu time.struct_time
dnes () Vráti aktuálny miestny dátum
ordinálne () Vráťte proleptický gregoriánsky ordinál dátumu, kde 1. január roku 1 má ordinálne číslo 1
pracovný deň () Vráti deň v týždni ako celé číslo, kde pondelok je 0 a nedeľa je 6

Trieda Python Time

Časová trieda vytvára časový objekt, ktorý predstavuje miestny čas nezávisle od akéhokoľvek dňa.

Syntax konštruktora:

class datetime.time(hodina=0, minúta=0, sekunda=0, mikrosekunda=0, tzinfo=žiadne, *, záhyb=0)

Všetky argumenty sú voliteľné. tzinfo môže byť Žiadne, inak musia byť všetky atribúty celé číslo v nasledujúcom rozsahu –

  • 0 <= hodina < 24
  • 0 <= minúta < 60
  • 0 <= sekunda < 60
  • 0 <= mikrosekunda < 1000000
  • zložiť [0, 1]

Príklad 1: Objekt Time reprezentujúci čas v Pythone

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ýkon:

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)>

Príklad 2: Získajte hodiny, minúty, sekundy a mikrosekundy

Po vytvorení časového objektu je možné jeho atribúty vytlačiť aj samostatne.

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ýkon:

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

Príklad 3: Konvertujte objekt Time na String

Pomocou metódy isoformat() môžeme previesť objekt času na reťazec.

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ýkon

String Representation: 12:24:36.001212>

Zoznam metód časovej triedy

Názov funkcie

Popis

dst() Vráti tzinfo.dst() je tzinfo nie je Žiadne
fromisoformat() Vráti objekt času z reťazcovej reprezentácie času
izoformát() Vráti reťazcovú reprezentáciu času z objektu time
nahradiť () Zmení hodnotu objektu času s daným parametrom
strftime() Vráti reťazcovú reprezentáciu času v danom formáte
tzname() Vráti tzinfo.tzname() je tzinfo nie je Žiadne
utcoffset() Vráti tzinfo.utcffsets() je tzinfo nie je Žiadne

trieda Python Datetime

The trieda DateTime obsahuje informácie o dátume a čase. Rovnako ako objekt dátumu, dátum a čas predpokladá aktuálny gregoriánsky kalendár rozšírený v oboch smeroch; ako objekt času, dátum a čas predpokladá, že každý deň má presne 3600*24 sekúnd.

Syntax konštruktora:

class datetime.datetime(rok, mesiac, deň, hodina=0, minúta=0, sekunda=0, mikrosekunda=0, tzinfo=žiadne, *, záhyb=0)

Argumenty rok, mesiac a deň sú povinné. tzinfo môže byť Žiadne, všetky atribúty musia byť celé číslo v nasledujúcom rozsahu –

  • MINYEAR <= rok <= MAXYEAR
  • 1 <= mesiac <= 12
  • 1 <= deň <= počet dní v danom mesiaci a roku
  • 0 <= hodina < 24
  • 0 <= minúta < 60
  • 0 <= sekunda < 60
  • 0 <= mikrosekunda < 1000000
  • zložiť [0, 1]

Poznámka – Odovzdanie argumentu iného ako celé číslo vyvolá TypeError a odovzdanie argumentov mimo rozsahu vyvolá hodnotu ValueError.

Objekt DateTime reprezentujúci DateTime v Pythone

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ýkon:

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

Získajte rok, mesiac, hodinu, minútu a časovú pečiatku

Po vytvorení objektu DateTime možno jeho atribúty vytlačiť aj samostatne.

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ýkon:

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

Aktuálny dátum a čas

Aktuálny dátum a čas môžete vytlačiť pomocou funkcie Datetime.now(). funkcia now() vráti aktuálny miestny dátum a čas.

algoritmus mergesort

Python3




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

>

>

Výkon:

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

Previesť Python Datetime na String

Datetime môžeme previesť na reťazec v Pythone pomocou datetime.strftime a metódy dátumu a času.izoformátu.

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ýkon

2021-08-19T18:13:25.346259>

Zoznam metód triedy Datetime

Názov funkcie

Popis

astimezone() Vráti objekt DateTime obsahujúci informácie o časovom pásme.
kombinovať () Skombinuje objekty dátumu a času a vráti objekt DateTime
ctime() Vráti reťazcovú reprezentáciu dátumu a času
dátum() Vráti objekt triedy Date
fromisoformat() Vráti objekt datetime z reťazcovej reprezentácie dátumu a času
odordinálne() Vráti objekt dátumu z proleptickej gregoriánskej ordinály, kde 1. január roku 1 má ordinálnu 1. Hodina, minúta, sekunda a mikrosekunda sú 0
fromtimestamp() Dátum a čas návratu z časovej pečiatky POSIX
izokalendár() Vráti n-ticu rok, týždeň a deň v týždni
izoformát() Vráti reťazcovú reprezentáciu dátumu a času
isoweekday() Vráti deň v týždni ako celé číslo, kde pondelok je 1 a nedeľa je 7
teraz() Vráti aktuálny miestny dátum a čas s parametrom tz
nahradiť () Zmení špecifické atribúty objektu DateTime
strftime() Vráti reťazcovú reprezentáciu objektu DateTime s daným formátom
strptime() Vráti objekt DateTime zodpovedajúci reťazcu dátumu
čas() Vráti objekt triedy Time
timetuple() Vráti objekt typu time.struct_time
timetz() Vráti objekt triedy Time
dnes () Vráti miestny dátum a čas s tzinfo ako Žiadne
ordinálne() Vráťte proleptický gregoriánsky ordinál dátumu, kde 1. január roku 1 má ordinál 1
tzname() Vráti názov časového pásma
utcfromtimestamp() Vráťte UTC z časovej pečiatky POSIX
utcoffset() Vráti posun UTC
utcnow() Vráti aktuálny dátum a čas UTC
pracovný deň () Vráti deň v týždni ako celé číslo, kde pondelok je 0 a nedeľa je 6

Trieda Python Timedelta

Trieda timedelta Pythonu sa používa na výpočet rozdielov v dátumoch a môže sa použiť aj na manipuláciu s dátumom v Pythone. Je to jeden z najjednoduchších spôsobov vykonávania manipulácií s dátumom.

Syntax konštruktora:

class datetime.timedelta(dni=0, sekundy=0, mikrosekundy=0, milisekundy=0, minúty=0, hodiny=0, týždne=0)
Vrátenie: Dátum

Pridajte dni do objektu DateTime

Ukážka funkcie timedelta

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ýkon:

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>

Rozdiel medzi dvoma dátumami a časmi

Pomocou tejto triedy je možné nájsť aj rozdiely v dátume a čase.

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ýkon:

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>

Operácie podporované triedou Timedelta

Operátor

Popis

Pridanie (+) Pridá a vráti dva objekty timedelta
Odčítanie (-) Odčíta a vráti dva objekty timedelta
Násobenie (*) Vynásobí objekt timedelta s float alebo int
divízia (/) Rozdelí objekt timedelta s float alebo int
Delenie podlahy (//) Rozdelí objekt timedelta s float alebo int a vráti hodnotu int spodnej hranice výstupu
modul (%) Rozdelí dva objekty timedelta a vráti zvyšok
+ (časová delta) Vráti rovnaký objekt timedelta
-(časová delta) Vráti výslednicu -1*časová delta
abs (časová delta) Vráti +(timedelta), ak timedelta.days> 1=0, inak vráti -(timedelta)
str (časová delta) Vráti reťazec v tvare (+/-) dni[d], HH:MM:SS.UUUUUU
repr(časová delta) Vráti reprezentáciu reťazca vo forme volania konštruktora

Formátovať dátum a čas v Pythone

Formátovanie DateTime môže byť veľmi potrebné, pretože reprezentácia dátumu sa môže líšiť od miesta k miestu. V niektorých krajinách to môže byť yyyy-mm-dd av iných krajinách to môže byť dd-mm-yyyy. Na formátovanie Pythonu Datetime možno použiť funkcie strptime a strftime.

Python Datetime strftime

Metóda strftime() konvertuje daný dátum, čas alebo objekt DateTime na reťazcovú reprezentáciu daného formátu.

Formát dátumu a času v Pythone

Program Python na demonštráciu funkcie 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ýkon

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: Ďalšie informácie nájdete v časti metóda strftime(). .

Python DateTime strptime

Strptime() vytvorí z daného reťazca objekt DateTime.

Príklad: DateTime strptime

Python3


Fibonacciho séria v Jave



# 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ýkon

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 funkciu datetime.now(). neobsahuje žiadne informácie o časových pásmach. Využíva iba aktuálny systémový čas. Tzinfo je abstraktná základná trieda v Pythone. Nedá sa priamo vytvoriť inštanciu. Konkrétna podtrieda musí byť odvodená z tejto abstraktnej triedy a implementovať metódy, ktoré ponúka.

Zoznam objektov DateTime.tzinfo() Pythonu

Názov funkcie

Popis

dst() Vráti tzinfo.dst() je tzinfo nie je Žiadne
fromutc() Účelom tejto funkcie je upraviť údaje dátumu a času,
vrátenie ekvivalentného DateTime v miestnom čase.
tzname() Vráti tzinfo.tzname() je tzinfo nie je Žiadne
utcoffset() Vráti tzinfo.utcffsets() je tzinfo nie je Žiadne

Príklad

Inštancia triedy tzinfo môže byť poskytnutá konštruktorom objektu DateTime a time. Používa sa v scenároch, ako je prevod miestneho času na UTC alebo účtovanie 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ýkon:

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

Časové pásmo Python DateTime

Časové pásma v DateTime je možné použiť v prípade, že by ste chceli zobraziť čas podľa časového pásma konkrétneho regiónu. To možno vykonať pomocou pytz modul jazyka Python. Tento modul slúži na funkcie konverzie dátumu a času a pomáha používateľom obsluhovať medzinárodné klientske základne.

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ýkon

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>