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átumová trieda Pythonu
- Trieda Python Time
- trieda Python Datetime
- Trieda Python Timedelta
- Python DateTime.tzinfo()
- Časové pásmo Python DateTime
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
# 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> ))> |
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.
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
# 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