Python datumski modul
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:
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)> |
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))> |
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