logo

Python datuma un laika modulis

Python datums un laiks nav atsevišķi datu tipi, bet gan modulis ar nosaukumu Datums Laiks Python var importēt, lai strādātu ar datumu un laiku. Python Datetime modulis ir iebūvēts Python, tāpēc tas nav jāinstalē ārēji.

Šajā rakstā mēs izpētīsim, kā Datums un laiks Python darbojas un kādas ir galvenās DateTime moduļa klases Python.

Satura rādītājs



Python DateTime modulis

Python datums un laiks modulis nodrošina nodarbības darbam ar datumu un laiku. Šīs klases nodrošina vairākas funkcijas, lai apstrādātu datumus, laikus un laika intervālus. Datums un DateTime ir Python objekti, tāpēc, manipulējot ar tiem, jūs manipulējat ar objektiem, nevis ar virknēm vai laikspiedoliem.

DateTime modulis ir iedalīts 6 galvenajās klasēs -

  • datums – Idealizēts naivs datums, pieņemot, ka pašreizējais Gregora kalendārs vienmēr ir bijis un vienmēr būs spēkā. Tās atribūti ir gads, mēnesis un diena. jūs varat atsaukties uz - Python DateTime — datuma klase
  • laiks – Idealizēts laiks, kas nav atkarīgs no konkrētas dienas, pieņemot, ka katrai dienai ir tieši 24*60*60 sekundes. Tās atribūti ir stunda, minūte, sekunde, mikrosekunde un tzinfo. Jūs varat atsaukties uz - Python DateTime — laika klase
  • datums Laiks - Tā ir datuma un laika kombinācija kopā ar atribūtiem gads, mēnesis, diena, stunda, minūte, sekunde, mikrosekunde un tzinfo. Jūs varat atsaukties uz - Python DateTime — DateTime klase
  • laika delta – Ilgums, kas izsaka atšķirību starp diviem datuma, laika vai datuma un laika gadījumiem līdz mikrosekundes izšķirtspējai. Jūs varat atsaukties uz - Python DateTime — Timedelta klase
  • tzinfo – Tas nodrošina laika joslu informācijas objektus. Jūs varat atsaukties uz - Python — datetime.tzinfo()
  • laika zona – Klase, kas ievieš tzinfo abstrakto bāzes klasi kā fiksētu nobīdi no UTC (jaunums versijā 3.2). Jūs varat atsaukties uz - Laika joslas apstrāde programmā Python

Python datumu klase

Datuma klase tiek izmantota datuma objektu instantiancei programmā Python. Kad šīs klases objekts tiek iemiesots, tas apzīmē datumu formātā GGGG-MM-DD . Šīs klases konstruktoram ir nepieciešami trīs obligātie argumenti gads, mēnesis un datums.

Python datuma klase Sintakse

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

Argumentiem jābūt šādā diapazonā -

  • MINYEAR <= gads <= MAXYEAR
  • 1 <= mēnesis <= 12
  • 1 <= diena <= dienu skaits attiecīgajā mēnesī un gadā

Piezīme – Ja arguments nav vesels skaitlis, tas radīs TypeError un, ja tas ir ārpus diapazona, tiks paaugstināts ValueError.

Datuma objekts, kas attēlo datus Python

Konstruktora inicializācija un argumentu nodošana formātā gads, mēnesis un datums.

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>

>

>

Izvade:

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

Iegūstiet pašreizējo datumu

Lai atgrieztu pašreizējo lokālo datumu, tiek izmantota datuma klases funkcija today(). Funkcijai today() ir vairāki atribūti (gads, mēnesis un diena). Tos var izdrukāt atsevišķi.

Python3




abstraktā klase java

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

>

>

Izvade

Today's date is 2021-08-19>

Iegūstiet šodienas gadu, mēnesi un datumu

Mēs varam iegūt gada, mēneša un datuma atribūtus no datuma objekta, izmantojot datuma klases atribūtu gads, mēnesis un datums.

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

>

>

Izvade

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

Iegūstiet datumu no laikspiedola

Mēs varam izveidot datuma objektus no laikspiedoliem y=, izmantojot fromtimestamp() metodi. Laikspiedols ir sekunžu skaits no 1970. gada 1. janvāra UTC līdz noteiktam datumam.

Python3




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

>

>

Izvade

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

Konvertēt datumu par virkni

Mēs varam pārvērst datuma objektu par virknes attēlojumu, izmantojot divas funkcijas isoformat () un 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>))>

>

>

Izvade

String Representation 2021-08-19>

Datumu klases metožu saraksts

Funkcijas nosaukums

Apraksts

ctime() Atgriezt virkni, kas apzīmē datumu
no izokalendāra() Atgriež datumu, kas atbilst ISO kalendāram
no izoformāta () Atgriež datuma objektu no datuma virknes attēlojuma
no kārtas() Atgriež datuma objektu no proleptiskā Gregora kārtas, kur 1. gada 1. janvārim ir 1. kārtas skaitlis
fromtimestamp () Atgriež datuma objektu no POSIX laikspiedola
izokalendārs () Atgriež gadu, nedēļu un nedēļas dienu
izoformāts () Atgriež datuma virknes attēlojumu
isoweekday () Atgriež nedēļas dienu kā veselu skaitli, kur pirmdiena ir 1 un svētdiena ir 7
aizvietot() Maina datuma objekta vērtību ar doto parametru
strftime() Atgriež datuma virkni norādītajā formātā
laika grafiks () Atgriež objektu, kura tips ir time.struct_time
šodien () Atgriež pašreizējo vietējo datumu
toordināls() Atgriezt datuma proleptisko Gregora kārtas skaitli, kur 1. gada 1. janvārim ir 1. kārtas skaitlis
darba diena () Atgriež nedēļas dienu kā veselu skaitli, kur pirmdiena ir 0 un svētdiena ir 6

Python laika klase

Laika klase izveido laika objektu, kas attēlo vietējo laiku neatkarīgi no dienas.

Konstruktora sintakse:

klase datetime.time(stunda=0, minūte=0, sekunde=0, mikrosekunde=0, tzinfo=nav, *, fold=0)

Visi argumenti nav obligāti. tzinfo var būt Neviens, pretējā gadījumā visiem atribūtiem jābūt veseliem skaitļiem šādā diapazonā -

  • 0 <= stunda < 24
  • 0 <= minūte < 60
  • 0 <= sekunde < 60
  • 0 <= mikrosekunde < 1000000
  • salocīt [0, 1]

1. piemērs: Laika objekts, kas attēlo laiku Python

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>

>

>

Izvade:

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

2. piemērs: iegūstiet stundas, minūtes, sekundes un mikrosekundes

Pēc laika objekta izveidošanas tā atribūtus var izdrukāt arī atsevišķi.

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

>

>

Izvade:

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

3. piemērs. Pārveidojiet objektu Time par virkni

Laika objektu varam pārvērst virknē, izmantojot metodi izoformāts ().

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

>

>

Izvade

String Representation: 12:24:36.001212>

Laika klases metožu saraksts

Funkcijas nosaukums

Apraksts

dst() Atgriež tzinfo.dst() ir tzinfo nav Nav
no izoformāta () Atgriež laika objektu no laika virknes attēlojuma
izoformāts () Atgriež laika virknes attēlojumu no laika objekta
aizvietot() Maina laika objekta vērtību ar doto parametru
strftime() Atgriež laika virkni norādītajā formātā
tzname() Atgriež tzinfo.tzname() ir tzinfo nav Nav
utcoffset() Atgriež tzinfo.utcffsets() ir tzinfo nav Nav

Python Datetime klase

The Datuma un laika klase satur informāciju gan par datumu, gan laiku. Tāpat kā datuma objekts, datuma laiks pieņem pašreizējo Gregora kalendāru, kas paplašināts abos virzienos; tāpat kā laika objekts, datuma laiks pieņem, ka katrā dienā ir tieši 3600*24 sekundes.

Konstruktora sintakse:

klase datetime.datetime(gads, mēnesis, diena, stunda=0, minūte=0, sekunde=0, mikrosekunde=0, tzinfo=nav, *, fold=0)

Gada, mēneša un dienas argumenti ir obligāti. tzinfo var būt Nav, pārējiem visiem atribūtiem jābūt veseliem skaitļiem šādā diapazonā -

  • MINYEAR <= gads <= MAXYEAR
  • 1 <= mēnesis <= 12
  • 1 <= diena <= dienu skaits attiecīgajā mēnesī un gadā
  • 0 <= stunda < 24
  • 0 <= minūte < 60
  • 0 <= sekunde < 60
  • 0 <= mikrosekunde < 1000000
  • salocīt [0, 1]

Piezīme – Ja nododat argumentu, kas nav vesels skaitlis, tiks parādīta TypeError, bet argumentu nodošana ārpus diapazona - ValueError.

DateTime objekts, kas attēlo DateTime Python

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

>

>

Izvade:

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

Iegūstiet gadu, mēnesi, stundu, minūti un laikspiedolu

Pēc DateTime objekta izveidošanas tā atribūtus var izdrukāt arī atsevišķi.

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

>

>

Izvade:

Imessage spēles ar Android
year = 1999 month = 12 hour = 12 minute = 12 timestamp = 945000732.0>

Pašreizējais datums un laiks

Pašreizējo datumu un laiku var izdrukāt, izmantojot funkciju Datetime.now(). Funkcija now() atgriež pašreizējo vietējo datumu un laiku.

Python3




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

>

>

Izvade:

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

Konvertējiet Python datumu par virkni

Mēs varam pārvērst Datetime par virkni Python, izmantojot datetime.strftime un datetime.isoformat metodes.

Python3




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

>

>

Izvade

2021-08-19T18:13:25.346259>

Datuma un laika klases metožu saraksts

Funkcijas nosaukums

Apraksts

astimezone () Atgriež DateTime objektu, kas satur laika joslas informāciju.
apvienot () Apvieno datuma un laika objektus un atgriež DateTime objektu
ctime() Atgriež datuma un laika virknes attēlojumu
datums() Atgrieziet Datuma klases objektu
no izoformāta() Atgriež datuma un laika objektu no datuma un laika virknes
no kārtas() Atgriež datuma objektu no proleptiskā Gregora kārtas, kur 1. gada 1. janvārī ir kārtas skaitlis 1. Stunda, minūte, sekunde un mikrosekunde ir 0
fromtimestamp () Atgriešanas datums un laiks no POSIX laikspiedola
izokalendārs () Atgriež gadu, nedēļu un nedēļas dienu
izoformāts () Atgriezt datuma un laika virknes attēlojumu
isoweekday () Atgriež nedēļas dienu kā veselu skaitli, kur pirmdiena ir 1 un svētdiena ir 7
tagad () Atgriež pašreizējo vietējo datumu un laiku ar parametru tz
aizvietot() Maina konkrētus objekta DateTime atribūtus
strftime() Atgriež DateTime objekta virknes attēlojumu norādītajā formātā
strptime() Atgriež DateTime objektu, kas atbilst datuma virknei
laiks() Atgriezt laika klases objektu
laika grafiks () Atgriež objektu, kura tips ir time.struct_time
timetz () Atgriezt laika klases objektu
šodien () Atgriezt vietējo DateTime ar tzinfo kā Nav
toordināls() Atgriezt datuma proleptisko Gregora kārtas skaitli, kur 1. gada 1. janvārim ir 1. kārtas skaitlis
tzname() Atgriež laika joslas nosaukumu
utcfromtimestamp() Atgriezt UTC no POSIX laikspiedola
utcoffset() Atgriež UTC nobīdi
utcnow () Atgriezt pašreizējo UTC datumu un laiku
darba diena () Atgriež nedēļas dienu kā veselu skaitli, kur pirmdiena ir 0 un svētdiena ir 6

Python Timedelta klase

Python timedelta klase tiek izmantota datumu atšķirību aprēķināšanai, kā arī to var izmantot datumu manipulācijām Python. Tas ir viens no vienkāršākajiem veidiem, kā veikt datuma manipulācijas.

Konstruktora sintakse:

klase datetime.timedelta(dienas = 0, sekundes = 0, mikrosekundes = 0, milisekundes = 0, minūtes = 0, stundas = 0, nedēļas = 0)
Atgriešana: datums

Pievienojiet dienas DateTime objektam

Timedelta funkcijas demonstrācija

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

>

>

Izvade:

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>

Atšķirība starp diviem datumiem un laikiem

Izmantojot šo klasi, var atrast arī datuma un laika atšķirības.

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

>

>

Izvade:

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>

Timedelta klases atbalstītās darbības

Operators

Apraksts

Papildinājums (+) Pievieno un atgriež divus timedelta objektus
Atņemšana (-) Atņem un atgriež divus timedelta objektus
Reizināšana (*) Reizina timedelta objektu ar float vai int
Divīzija (/) Sadala timedelta objektu ar float vai int
Stāvu sadalījums (//) Sadala laika delta objektu ar pludiņu vai int un atgriež izvades int no zemākās vērtības
modulis (%) Sadala divus timedelta objektus un atgriež atlikušo
+ (laika delta) Atgriež to pašu timedelta objektu
-(laika delta) Atgriež -1*timedelta rezultātu
abs (laika delta) Atgriež +(timedelta), ja timedelta.days> 1=0, citādi atgriež -(timedelta)
str(timedelta) Atgriež virkni šādā formā (+/-) day[s], HH:MM:SS.UUUUUU
repr(timedelta) Atgriež virknes attēlojumu konstruktora izsaukuma formā

Formatējiet datumu un laiku programmā Python

Datuma un laika formatēšana var būt ļoti nepieciešama, jo datuma attēlojums dažādās vietās var atšķirties. Dažās valstīs tas var būt gggg-mm-dd, bet citās valstīs tas var būt dd-mm-gggg. Lai formatētu Python Datetime, var izmantot funkcijas strptime un strftime.

Python Datetime strftime

Strftime() metode pārvērš doto datuma, laika vai DateTime objektu noteiktā formāta virknes attēlojumā.

Python datuma un laika formāts

Python programma, lai demonstrētu strftime() funkciju

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

>

>

Izvade

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>

Piezīme: Lai iegūtu papildinformāciju, skatiet strftime() metode .

Python DateTime strptime

Strptime() izveido DateTime objektu no dotās virknes.

Piemērs: Datums un laiks 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))>

>

>

Izvade

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() funkcija nesatur informāciju par laika joslām. Tas izmanto tikai pašreizējo sistēmas laiku. Tzinfo ir abstrakta pamatklase Python. To nevar tieši izveidot. Konkrētai apakšklasei ir jāatvasina no šīs abstraktās klases un jāīsteno tās piedāvātās metodes.

Python DateTime.tzinfo() objektu saraksts

Funkcijas nosaukums

Apraksts

dst() Atgriež tzinfo.dst() ir tzinfo nav Nav
fromutc() Šīs funkcijas mērķis ir pielāgot datuma un laika datus,
atgriež līdzvērtīgu DateTime pēc paša vietējā laika.
tzname() Atgriež tzinfo.tzname() ir tzinfo nav Nav
utcoffset() Atgriež tzinfo.utcffsets() ir tzinfo nav Nav

Piemērs

Tzinfo klases gadījumu var nodrošināt DateTime un laika objektu konstruktoriem. To izmanto tādos scenārijos kā vietējā laika konvertēšana UTC vai vasaras laika uzskaite.

Python3


salīdzināma java



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

>

>

Izvade:

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

Python DateTime laika josla

Laika joslas DateTime var izmantot gadījumos, kad varētu vēlēties parādīt laiku atbilstoši konkrēta reģiona laika joslai. To var izdarīt, izmantojot pytz modulis no Python. Šis modulis apkalpo datuma un laika konvertēšanas funkcijas un palīdz lietotājiem, kas apkalpo starptautiskās klientu bāzes.

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

>

>

Izvade

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>