V Pythonu datum in čas nista samostojna podatkovna tipa, ampak modul z imenom Datum čas v Python je mogoče uvoziti za delo z datumom in uro. Modul Python Datetime je vgrajen v Python, zato ga ni treba namestiti zunaj.
V tem članku bomo raziskali, kako DateTime v Pythonu deluje in kateri so glavni razredi modula DateTime v Pythonu.
Kazalo
- Modul Python DateTime
- Datumski razred Python
- Časovni razred Python
- Razred Python Datetime
- Razred Python Timedelta
- Python DateTime.tzinfo()
- Časovni pas Python DateTime
Modul Python DateTime
Python Datum in čas modul ponuja razrede za delo z datumom in uro. Ti razredi nudijo več funkcij za obravnavo datumov, ur in časovnih intervalov. Date in DateTime sta predmeta v Pythonu, zato, ko manipulirate z njima, manipulirate s predmeti in ne z nizi ali časovnimi žigi.
Modul DateTime je razvrščen v 6 glavnih razredov –
- datum – Idealiziran naiven datum, ob predpostavki, da je trenutni gregorijanski koledar vedno veljal in bo vedno v veljavi. Njeni atributi so leto, mesec in dan. lahko se sklicujete na – Python DateTime – datumski razred
- čas – Idealiziran čas, neodvisen od posameznega dneva, ob predpostavki, da ima vsak dan točno 24*60*60 sekund. Njegovi atributi so ura, minuta, sekunda, mikrosekunda in tzinfo. Lahko se sklicujete na – Python DateTime – Časovni razred
- Datum čas – Je kombinacija datuma in časa skupaj z atributi leto, mesec, dan, ura, minuta, sekunda, mikrosekunda in tzinfo. Lahko se sklicujete na – Python DateTime – razred DateTime
- časovna delta – Trajanje, ki izraža razliko med dvema primerkoma datuma, časa ali datuma in časa v mikrosekundni ločljivosti. Lahko se sklicujete na – Python DateTime – razred Timedelta
- tzinfo – Zagotavlja objekte informacij o časovnem pasu. Lahko se sklicujete na – Python – datetime.tzinfo()
- časovni pas – Razred, ki izvaja abstraktni osnovni razred tzinfo kot fiksni odmik od UTC (novo v različici 3.2). Lahko se sklicujete na – Upravljanje časovnega pasu v Pythonu
Datumski razred Python
Datumski razred se uporablja za instanciranje datumskih objektov v Pythonu. Ko je objekt tega razreda instanciran, predstavlja datum v formatu LLLL-MM-DD . Konstruktor tega razreda potrebuje tri obvezne argumente leto, mesec in datum.
Sintaksa datumskega razreda Python
class datetime.date(year, month, day)>
Argumenti morajo biti v naslednjem obsegu –
- MINYEAR <= leto <= MAXYEAR
- 1 <= mesec <= 12
- 1 <= dan <= število dni v danem mesecu in letu
Opomba – Če argument ni celo število, bo sprožil TypeError in če je zunaj obsega, bo sprožen ValueError.
Datumski objekt, ki predstavlja podatke v Pythonu
Inicializacija konstruktorja in posredovanje argumentov v obliki leto, mesec in 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> |
>
>
Izhod:
niz vsebuje
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)> Pridobite trenutni datum
Za vrnitev trenutnega lokalnega datuma se uporablja funkcija danes() razreda datuma. funkcija today() ima več atributov (leto, mesec in dan). Te je mogoče natisniti posamično.
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)> |
>
>Izhod
Today's date is 2021-08-19>
Pridobite današnje leto, mesec in datum
Atribute leta, meseca in datuma lahko pridobimo iz predmeta datum z uporabo atributa leta, meseca in datuma razreda datuma.
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)> |
>
>Izhod
Current year: 2021 Current month: 8 Current day: 19>
Pridobi datum iz časovnega žiga
Datumske objekte lahko ustvarimo iz časovnih žigov y= z uporabo metode fromtimestamp(). Časovni žig je število sekund od 1. januarja 1970 po UTC do določenega datuma.
Python3
from> datetime>import> datetime> # Getting Datetime from timestamp> date_time>=> datetime.fromtimestamp(>1887639468>)> print>(>'Datetime from timestamp:'>, date_time)> |
>
>Izhod
Datetime from timestamp: 2029-10-25 16:17:48>
Pretvori datum v niz
Datumski objekt lahko pretvorimo v predstavitev niza z uporabo dveh funkcij isoformat() in 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>))> |
>
>Izhod
String Representation 2021-08-19>
Seznam metod razreda datuma
| Ime funkcije | Opis |
|---|---|
| ctime() | Vrne niz, ki predstavlja datum |
| fromisocalendar() | Vrne datum, ki ustreza koledarju ISO |
| fromisoformat() | Vrne datumski objekt iz nizovne predstavitve datuma |
| fromordinal() | Vrne predmet datuma iz proleptičnega gregorijanskega ordinala, kjer ima 1. januar leta 1 ordinal 1 |
| fromtimestamp() | Vrne objekt datuma iz časovnega žiga POSIX |
| izokolendar() | Vrne dvojno leto, teden in dan v tednu |
| izoformat() | Vrne nizovno predstavitev datuma |
| isoweekday() | Vrne dan v tednu kot celo število, kjer je ponedeljek 1, nedelja pa 7 |
| zamenjati() | Spremeni vrednost datumskega objekta z danim parametrom |
| strftime() | Vrne nizovno predstavitev datuma v danem formatu |
| timetuple() | Vrne objekt tipa time.struct_time |
| danes() | Vrne trenutni lokalni datum |
| ordinal() | Vrni proleptični gregorijanski ordinal datuma, kjer ima 1. januar leta 1 ordinal 1 |
| delovni dan() | Vrne dan v tednu kot celo število, kjer je ponedeljek 0 in nedelja 6 |
Časovni razred Python
Časovni razred ustvari časovni objekt, ki predstavlja lokalni čas, neodvisno od katerega koli dneva.
Sintaksa konstruktorja:
razred datetime.time(ura=0, minuta=0, sekunda=0, mikrosekunda=0, tzinfo=brez, *, zgib=0)
Vsi argumenti so neobvezni. tzinfo je lahko None, sicer morajo biti vsi atributi celo število v naslednjem obsegu –
- 0 <= ura < 24
- 0 <= minuta < 60
- 0 <= sekunda < 60
- 0 <= mikrosekunda < 1000000
- prepogni [0, 1]
Primer 1: Časovni objekt, ki predstavlja č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> |
>
>
Izhod:
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. primer: pridobite ure, minute, sekunde in mikrosekunde
Ko ustvarite časovni objekt, lahko njegove atribute natisnete tudi ločeno.
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)> |
>
>
Izhod:
hour = 11 minute = 34 second = 56 microsecond = 0>
Primer 3: Pretvorite predmet Time v String
Časovni objekt lahko pretvorimo v niz z uporabo metode isoformat().
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>))> |
>
>Izhod
String Representation: 12:24:36.001212>
Seznam metod časovnega razreda
| Ime funkcije | Opis |
|---|---|
| dst() | Vrne tzinfo.dst() je tzinfo ni None |
| fromisoformat() | Vrne časovni objekt iz nizovne predstavitve časa |
| izoformat() | Vrne nizovno predstavitev časa iz časovnega objekta |
| zamenjati() | Spremeni vrednost časovnega predmeta z danim parametrom |
| strftime() | Vrne nizovno predstavitev časa v danem formatu |
| tzname() | Vrne tzinfo.tzname() je tzinfo ni None |
| utcoffset() | Vrne tzinfo.utcffsets() je tzinfo ni None |
Razred Python Datetime
The Razred DateTime vsebuje podatke o datumu in uri. Tako kot datumski objekt tudi datetime predpostavlja trenutni gregorijanski koledar, razširjen v obe smeri; tako kot časovni objekt tudi datetime predvideva, da je vsak dan natanko 3600*24 sekund.
Sintaksa konstruktorja:
razred datetime.datetime(leto, mesec, dan, ura=0, minuta=0, sekunda=0, mikrosekunda=0, tzinfo=brez, *, zgib=0)
Argumenti za leto, mesec in dan so obvezni. tzinfo je lahko None, ostali morajo biti vsi atributi celo število v naslednjem obsegu –
- MINYEAR <= leto <= MAXYEAR
- 1 <= mesec <= 12
- 1 <= dan <= število dni v danem mesecu in letu
- 0 <= ura < 24
- 0 <= minuta < 60
- 0 <= sekunda < 60
- 0 <= mikrosekunda < 1000000
- prepogni [0, 1]
Opomba – Posredovanje argumenta, ki ni celo število, bo povzročilo napako TypeError, posredovanje argumentov zunaj obsega pa bo povzročilo napako ValueError.
Objekt DateTime, ki predstavlja 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)> |
>
nizovne metode
>
Izhod:
1999-12-12 00:00:00 1999-12-12 12:12:12.342380>
Pridobite leto, mesec, uro, minuto in časovni žig
Ko ustvarite objekt DateTime, lahko njegove atribute natisnete tudi ločeno.
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())> |
>
>
Izhod:
year = 1999 month = 12 hour = 12 minute = 12 timestamp = 945000732.0>
Trenutni datum in čas
Trenutni datum in uro lahko natisnete s funkcijo Datetime.now(). funkcija now() vrne trenutni lokalni datum in uro.
Python3
from> datetime>import> datetime> # Calling now() function> today>=> datetime.now()> print>(>'Current date and time is'>, today)> |
>
>
Izhod:
Current date and time is 2019-10-25 11:12:11.289834>
Pretvori Python Datetime v String
Datetime lahko pretvorimo v niz v Pythonu z uporabo datetime.strftime in metode 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))> |
>
>Izhod
2021-08-19T18:13:25.346259>
Seznam metod razreda Datetime
| Ime funkcije | Opis |
|---|---|
| astimezone() | Vrne objekt DateTime, ki vsebuje informacije o časovnem pasu. |
| združi() | Združi objekte datuma in časa ter vrne objekt DateTime |
| ctime() | Vrne nizovno predstavitev datuma in ure |
| datum() | Vrnite predmet razreda Datum |
| fromisoformat() | Vrne objekt datetime iz nizovne predstavitve datuma in ure |
| fromordinal() | Vrne datumski predmet iz proleptičnega gregorijanskega ordinala, kjer ima 1. januar leta 1 ordinal 1. Ura, minuta, sekunda in mikrosekunda so 0 |
| fromtimestamp() | Povratni datum in čas iz časovnega žiga POSIX |
| izokolendar() | Vrne dvojno leto, teden in dan v tednu |
| izoformat() | Vrne nizovno predstavitev datuma in ure |
| isoweekday() | Vrne dan v tednu kot celo število, kjer je ponedeljek 1 in nedelja 7 |
| zdaj() | Vrne trenutni lokalni datum in čas s parametrom tz |
| zamenjati() | Spremeni posebne atribute predmeta DateTime |
| strftime() | Vrne nizovno predstavitev predmeta DateTime z dano obliko |
| strptime() | Vrne predmet DateTime, ki ustreza datumskemu nizu |
| čas() | Vrne predmet razreda Čas |
| timetuple() | Vrne objekt tipa time.struct_time |
| timetz() | Vrne predmet razreda Čas |
| danes() | Vrne lokalni datum in čas z tzinfo kot None |
| ordinal() | Vrni proleptični gregorijanski ordinal datuma, kjer ima 1. januar leta 1 ordinal 1 |
| tzname() | Vrne ime časovnega pasu |
| utcfromtimestamp() | Vrni UTC iz časovnega žiga POSIX |
| utcoffset() | Vrne odmik UTC |
| utcnow() | Vrni trenutni datum in čas UTC |
| delovni dan() | Vrne dan v tednu kot celo število, kjer je ponedeljek 0 in nedelja 6 |
Razred Python Timedelta
Razred Python timedelta se uporablja za izračun razlik v datumih in se lahko uporablja tudi za manipulacije datumov v Pythonu. To je eden najlažjih načinov za izvajanje manipulacij z datumi.
Sintaksa konstruktorja:
razred datetime.timedelta(dni=0, sekunde=0, mikrosekunde=0, milisekunde=0, minute=0, ure=0, tedni=0)
Vrne: datum
Dodajte dneve objektu DateTime
Predstavitev funkcije 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))> |
>
>
Izhod:
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>
Razlika med dvema datumoma in časoma
S tem razredom je mogoče najti tudi datumske in časovne razlike.
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))> |
>
>
Izhod:
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>
Operacije, ki jih podpira razred Timedelta
| Operater | Opis |
|---|---|
| Dodatek (+) | Doda in vrne dva objekta časovne razlike |
| odštevanje (-) | Odšteje in vrne dva objekta časovne delte |
| Množenje (*) | Pomnoži objekt timedelta z float ali int |
| Divizija (/) | Razdeli objekt timedelta s float ali int |
| Delitev nadstropja (//) | Razdeli objekt timedelta z float ali int in vrne int spodnjo vrednost izhoda |
| Modul (%) | Razdeli dva objekta timedelta in vrne preostanek |
| +(časovna delta) | Vrne isti objekt timedelta |
| -(časovna delta) | Vrne rezultanto -1*timedelta |
| abs (časovna delta) | Vrne +(timedelta), če timedelta.days> 1=0, sicer vrne -(timedelta) |
| str(timedelta) | Vrne niz v obliki (+/-) dan[s], HH:MM:SS.UUUUUU |
| repr(časovni delta) | Vrne predstavitev niza v obliki klica konstruktorja |
Oblikujte datum in čas v Pythonu
Oblikovanje DateTime je lahko zelo potrebno, saj se lahko predstavitev datuma razlikuje od kraja do kraja. V nekaterih državah je lahko llll-mm-dd, v drugih državah pa dd-mm-llll. Za formatiranje Python Datetime lahko uporabite funkciji strptime in strftime.
Python Datetime strftime
Metoda strftime() pretvori dani datum, čas ali objekt DateTime v predstavitev niza dane oblike.
Oblika datuma in časa Python
Program Python za prikaz funkcije 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)> |
>
>Izhod
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>
Opomba: Za več informacij glejte metoda strftime(). .
Python DateTime strptime
Strptime() ustvari objekt DateTime iz podanega niza.
primer: 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))> |
seznam sort java
>
>Izhod
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 funkcijo datetime.now(). ne vsebuje informacij o časovnih pasovih. Uporablja samo trenutni sistemski čas. Tzinfo je abstrakten osnovni razred v Pythonu. Ni ga mogoče neposredno instancirati. Konkretni podrazred mora izhajati iz tega abstraktnega razreda in izvajati metode, ki jih ponuja.
Seznam objektov Python DateTime.tzinfo().
| Ime funkcije | Opis |
|---|---|
| dst() | Vrne tzinfo.dst() je tzinfo ni None |
| fromutc() | Namen te funkcije je prilagoditi podatke o datumu in času, vrne enakovreden datum in čas v svojem lokalnem času. |
| tzname() | Vrne tzinfo.tzname() je tzinfo ni None |
| utcoffset() | Vrne tzinfo.utcffsets() je tzinfo ni None |
Primer
Primerek razreda tzinfo je mogoče zagotoviti konstruktorjem objektov DateTime in Time. Uporablja se v scenarijih, kot je pretvorba lokalnega časa v UTC ali upoštevanje poletnega časa.
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())> |
>
>
Izhod:
datetime.now() : IST Naive Object : None Aware Object : None>
Časovni pas Python DateTime
Časovne pasove v DateTime je mogoče uporabiti v primeru, ko želite prikazati čas glede na časovni pas določene regije. To je mogoče storiti z uporabo pytz modul Pythona. Ta modul služi funkcijam pretvorbe datuma in časa in pomaga uporabnikom, ki služijo mednarodnim bazam strank.
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>))> |
>
>Izhod
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>