Python datetime-modul
I Python er dato og klokkeslett ikke egne datatyper, men en modul med navn Dato tid i Python kan importeres for å jobbe med dato og klokkeslett. Python Datetime-modul kommer innebygd i Python, så det er ikke nødvendig å installere det eksternt.
I denne artikkelen vil vi utforske hvordan DateTime i Python fungerer og hva er hovedklassene til DateTime-modulen i Python.
Innholdsfortegnelse
- Python DateTime-modul
- Python datoklasse
- Python Time-klassen
- Python Datetime-klasse
- Python Timedelta Class
- Python DateTime.tzinfo()
- Python DateTime tidssone
Python DateTime-modul
Python Datetime modulen gir klasser for å jobbe med dato og klokkeslett. Disse klassene har flere funksjoner for å håndtere datoer, klokkeslett og tidsintervaller. Dato og DateTime er et objekt i Python, så når du manipulerer dem, manipulerer du objekter og ikke strenger eller tidsstempler.
DateTime-modulen er kategorisert i 6 hovedklasser –
- Dato – En idealisert naiv dato, forutsatt at den nåværende gregorianske kalenderen alltid var, og alltid vil være, i kraft. Dens attributter er år, måned og dag. du kan referere til - Python DateTime – Datoklasse
- tid – En idealisert tid, uavhengig av en bestemt dag, forutsatt at hver dag har nøyaktig 24*60*60 sekunder. Dens attributter er time, minutt, sekund, mikrosekund og tzinfo. Du kan referere til – Python DateTime – Tidsklasse
- dato tid – Det er en kombinasjon av dato og tid sammen med attributtene år, måned, dag, time, minutt, sekund, mikrosekund og tzinfo. Du kan referere til – Python DateTime – DateTime Class
- tidsdelta – En varighet som uttrykker forskjellen mellom to dato-, klokkeslett- eller datetime-forekomster til mikrosekunders oppløsning. Du kan referere til – Python DateTime – Timedelta-klasse
- tzinfo – Det gir tidssoneinformasjonsobjekter. Du kan referere til – Python – datetime.tzinfo()
- tidssone – En klasse som implementerer tzinfo abstrakt basisklasse som en fast offset fra UTC (Ny i versjon 3.2). Du kan referere til – Håndtering av tidssone i Python
Python datoklasse
Datoklassen brukes til å instansiere datoobjekter i Python. Når et objekt av denne klassen instansieres, representerer det en dato i formatet ÅÅÅÅ-MM-DD . Konstruktøren av denne klassen trenger tre obligatoriske argumenter år, måned og dato.
Python Dato klasse Syntaks
class datetime.date(year, month, day)
Argumentene må være i følgende område –
- MINYEAR <= år <= MAXYEAR
- 1 <= måned <= 12
- 1 <= dag <= antall dager i den gitte måneden og året
Merk – Hvis argumentet ikke er et heltall, vil det øke en TypeError, og hvis det er utenfor området, vil en ValueError bli hevet.
Datoobjekt som representerer data i Python
Initialisere konstruktøren og sende argumenter i formatet år, måned og dato.
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> |
Produksjon:
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) Få gjeldende dato
For å returnere den gjeldende lokale datoen i dag() brukes funksjonen til datoklassen. today()-funksjonen kommer med flere attributter (år, måned og dag). Disse kan skrives ut enkeltvis.
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)> |
Produksjon
Today's date is 2021-08-19
Få dagens år, måned og dato
Vi kan hente år, måned og datoattributter fra datoobjektet ved å bruke år, måned og datoattributter for datoklassen.
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)> |
Produksjon
Current year: 2021 Current month: 8 Current day: 19
Få dato fra tidsstempel
Vi kan lage datoobjekter fra timestamps y=ved hjelp av fromtimestamp()-metoden. Tidsstemplet er antall sekunder fra 1. januar 1970 ved UTC til en bestemt dato.
Python3
from> datetime> import> datetime> # Getting Datetime from timestamp> date_time> => datetime.fromtimestamp(> 1887639468> )> print> (> 'Datetime from timestamp:'> , date_time)> |
Produksjon
Datetime from timestamp: 2029-10-25 16:17:48
Konverter dato til streng
Vi kan konvertere datoobjekt til en strengrepresentasjon ved å bruke to funksjoner isoformat() og 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> ))> |
Produksjon
String Representation 2021-08-19
Liste over datoklassemetoder
| Funksjonsnavn | Beskrivelse |
|---|---|
| ctime() | Returner en streng som representerer datoen |
| fromisocalendar() | Returnerer en dato som tilsvarer ISO-kalenderen |
| fromisoformat() | Returnerer et datoobjekt fra strengrepresentasjonen av datoen |
| fraordinal() | Returnerer et datoobjekt fra den proleptiske gregorianske ordinalen, der 1. januar i år 1 har ordinal 1 |
| fromtimestamp() | Returnerer et datoobjekt fra POSIX-tidsstemplet |
| isocalendar() | Returnerer et tuppelår, uke og ukedag |
| isoformat() | Returnerer strengrepresentasjonen av datoen |
| isoweekday() | Returnerer ukedagen som et heltall der mandag er 1 og søndag er 7 |
| erstatte() | Endrer verdien til datoobjektet med den gitte parameteren |
| strftime() | Returnerer en strengrepresentasjon av datoen med det gitte formatet |
| timetuple() | Returnerer et objekt av typen time.struct_time |
| i dag() | Returnerer gjeldende lokale dato |
| toordinal() | Returner den proleptiske gregorianske ordinalen for datoen, der 1. januar i år 1 har ordinal 1 |
| ukedag() | Returnerer ukedagen som heltall der mandag er 0 og søndag er 6 |
Python Time-klassen
Tidsklassen lager tidsobjektet som representerer lokal tid, uavhengig av hvilken som helst dag.
Konstruktørsyntaks:
klasse datetime.time(time=0, minutt=0, sekund=0, mikrosekund=0, tzinfo=Ingen, *, fold=0)
Alle argumentene er valgfrie. tzinfo kan være Ingen ellers må alle attributtene være heltall i følgende område –
- 0 <= time < 24
- 0 <= minutt < 60
- 0 <= sekund < 60
- 0 <= mikrosekund < 1000000
- brett inn [0, 1]
Eksempel 1: Tidsobjekt som representerer tid i 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> |
Produksjon:
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)
Eksempel 2: Få timer, minutter, sekunder og mikrosekunder
Etter å ha opprettet et tidsobjekt, kan dets attributter også skrives ut separat.
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)> |
Produksjon:
hour = 11 minute = 34 second = 56 microsecond = 0
Eksempel 3: Konverter Time-objekt til String
Vi kan konvertere tidsobjekt til streng ved å bruke isoformat()-metoden.
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> ))> |
Produksjon
String Representation: 12:24:36.001212
Liste over tidsklassemetoder
| Funksjonsnavn | Beskrivelse |
|---|---|
| dst() | Returnerer tzinfo.dst() er tzinfo er ikke Ingen |
| fromisoformat() | Returnerer et tidsobjekt fra strengrepresentasjonen av tiden |
| isoformat() | Returnerer strengrepresentasjonen av tid fra tidsobjektet |
| erstatte() | Endrer verdien til tidsobjektet med den gitte parameteren |
| strftime() | Returnerer en strengrepresentasjon av tiden med det gitte formatet |
| tzname() | Returnerer tzinfo.tzname() er tzinfo er ikke Ingen |
| utcoffset() | Returnerer tzinfo.utcffsets() er tzinfo er ikke Ingen |
Python Datetime-klasse
De DatoTid klasse inneholder informasjon om både dato og klokkeslett. Som et datoobjekt antar datetime den gjeldende gregorianske kalenderen utvidet i begge retninger; som et tidsobjekt, antar datetime at det er nøyaktig 3600*24 sekunder i hver dag.
Konstruktørsyntaks:
klasse datetime.datetime(år, måned, dag, time=0, minutt=0, sekund=0, mikrosekund=0, tzinfo=Ingen, *, fold=0)
Argumentene for år, måned og dag er obligatoriske. tzinfo kan være Ingen, resten må alle attributtene være et heltall i følgende område –
- MINYEAR <= år <= MAXYEAR
- 1 <= måned <= 12
- 1 <= dag <= antall dager i den gitte måneden og året
- 0 <= time < 24
- 0 <= minutt < 60
- 0 <= sekund < 60
- 0 <= mikrosekund < 1000000
- brett inn [0, 1]
Merk – Ved å sende et annet argument enn heltall vil en TypeError oppstå, og å sende argumenter utenfor området vil øke ValueError.
DateTime-objekt som representerer DateTime i 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)> |
Produksjon:
1999-12-12 00:00:00 1999-12-12 12:12:12.342380
Få år, måned, time, minutt og tidsstempel
Etter å ha opprettet et DateTime-objekt, kan dets attributter også skrives ut separat.
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())> |
Produksjon:
year = 1999 month = 12 hour = 12 minute = 12 timestamp = 945000732.0
Gjeldende dato og klokkeslett
Du kan skrive ut gjeldende dato og klokkeslett ved å bruke Datetime.now()-funksjonen. now()-funksjonen returnerer gjeldende lokale dato og klokkeslett.
Python3
from> datetime> import> datetime> # Calling now() function> today> => datetime.now()> print> (> 'Current date and time is'> , today)> |
Produksjon:
Current date and time is 2019-10-25 11:12:11.289834
Konverter Python Datetime til String
Vi kan konvertere Datetime til streng i Python ved å bruke datetime.strftime og datetime.isoformat-metoder.
Python3
from> datetime> import> datetime as dt> # Getting current date and time> now> => dt.now()> string> => dt.isoformat(now)> print> (string)> print> (> type> (string))> |
Produksjon
2021-08-19T18:13:25.346259
Liste over Datetime-klassemetoder
| Funksjonsnavn | Beskrivelse |
|---|---|
| astimezone() | Returnerer DateTime-objektet som inneholder tidssoneinformasjon. |
| kombinere() | Kombinerer dato- og klokkeslettobjektene og returnerer et DateTime-objekt |
| ctime() | Returnerer en strengrepresentasjon av dato og klokkeslett |
| Dato() | Returner klasseobjektet Dato |
| fromisoformat() | Returnerer et datetime-objekt fra strengrepresentasjonen av datoen og klokkeslettet |
| fraordinal() | Returnerer et datoobjekt fra den proleptiske gregorianske ordinalen, der 1. januar i år 1 har ordinal 1. Time, minutt, sekund og mikrosekund er 0 |
| fromtimestamp() | Returner dato og klokkeslett fra POSIX-tidsstempel |
| isocalendar() | Returnerer et tuppelår, uke og ukedag |
| isoformat() | Returner strengrepresentasjonen av dato og klokkeslett |
| isoweekday() | Returnerer ukedagen som heltall der mandag er 1 og søndag er 7 |
| nå() | Returnerer gjeldende lokal dato og klokkeslett med tz-parameteren |
| erstatte() | Endrer de spesifikke attributtene til DateTime-objektet |
| strftime() | Returnerer en strengrepresentasjon av DateTime-objektet med det gitte formatet |
| strptime() | Returnerer et DateTime-objekt som tilsvarer datostrengen |
| tid() | Returner Time-klasseobjektet |
| timetuple() | Returnerer et objekt av typen time.struct_time |
| timetz() | Returner Time-klasseobjektet |
| i dag() | Returner lokal DateTime med tzinfo som Ingen |
| toordinal() | Returner den proleptiske gregorianske ordinalen for datoen, der 1. januar i år 1 har ordinal 1 |
| tzname() | Returnerer navnet på tidssonen |
| utcfromtimestamp() | Returner UTC fra POSIX-tidsstempel |
| utcoffset() | Returnerer UTC-forskyvningen |
| utcnow() | Returner gjeldende UTC-dato og -klokkeslett |
| ukedag() | Returnerer ukedagen som heltall der mandag er 0 og søndag er 6 |
Python Timedelta Class
Python timedelta-klassen brukes til å beregne forskjeller i datoer og kan også brukes til datomanipulasjoner i Python. Det er en av de enkleste måtene å utføre datomanipulasjoner på.
Konstruktørsyntaks:
klasse datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
Returer: Dato
Legg til dager til DateTime-objektet
Tidsdelta funksjon demonstrasjon
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))> |
Produksjon:
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
Forskjellen mellom to datoer og klokkeslett
Dato- og tidsforskjeller kan også bli funnet ved å bruke denne klassen.
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))> |
Produksjon:
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
Operasjoner støttet av Timedelta Class
| Operatør | Beskrivelse |
|---|---|
| Tillegg (+) | Legger til og returnerer to tidsdelta-objekter |
| Subtraksjon (-) | Trekker fra og returnerer to tidsdelta-objekter |
| Multiplikasjon (*) | Multipliserer timedelta-objekt med float eller int |
| Divisjon (/) | Deler tidsdelta-objektet med float eller int |
| Etasjeinndeling (//) | Deler timedelta-objektet med float eller int og returnerer int of floor-verdien til utgangen |
| Modul (%) | Deler to tidsdelta-objekter og returnerer resten |
| +(tidsdelta) | Returnerer det samme tidsdelta-objektet |
| -(tidsdelta) | Returnerer resultanten av -1*tidsdelta |
| abs (tidsdelta) | Returnerer +(tidsdelta) hvis tidsdelta.dager> 1=0 annet returnerer -(tidsdelta) |
| str(tidsdelta) | Returnerer en streng i formen (+/-) dag[er], TT:MM:SS.UUUUUU |
| repr(tidsdelta) | Returnerer strengrepresentasjonen i form av konstruktørkallet |
Formater DateTime i Python
Formatering av DateTime kan være svært nødvendig da datorepresentasjonen kan variere fra sted til sted. I noen land kan det være åååå-mm-dd og i andre land kan det være dd-mm-åååå. For å formatere Python Datetime kan strptime og strftime-funksjoner brukes.
Python Datetime strftime
En strftime()-metode konverterer det gitte datoen, klokkeslettet eller DateTime-objektet til strengrepresentasjonen av det gitte formatet.
Python Datetime-format
Python-program for å demonstrere strftime()-funksjonen
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)> |
Produksjon
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
Merk: For mer informasjon, se strftime()-metoden .
Python DateTime strptime
Strptime() oppretter et DateTime-objekt fra den gitte strengen.
Eksempel: DatoTid 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))> |
Produksjon
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()
De datetime.now() funksjon inneholder ingen informasjon om tidssoner. Den bruker kun gjeldende systemtid. Tzinfo er en abstrakt basisklasse i Python. Det kan ikke instansieres direkte. En konkret underklasse må stamme fra denne abstrakte klassen og implementere metodene som tilbys av den.
Liste over Python DateTime.tzinfo()-objekter
| Funksjonsnavn | Beskrivelse |
|---|---|
| dst() | Returnerer tzinfo.dst() er tzinfo er ikke Ingen |
| fromutc() | Hensikten med denne funksjonen er å justere dato og klokkeslett, returnere en tilsvarende DateTime i egen lokal tid. |
| tzname() | Returnerer tzinfo.tzname() er tzinfo er ikke Ingen |
| utcoffset() | Returnerer tzinfo.utcffsets() er tzinfo er ikke Ingen |
Eksempel
Klasseforekomsten tzinfo kan leveres til DateTime- og tidsobjektkonstruktørene. Den brukes i scenarier som å konvertere lokal tid til UTC eller ta hensyn til sommertid.
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())> |
Produksjon:
datetime.now() : IST Naive Object : None Aware Object : None
Python DateTime tidssone
Tidssoner i DateTime kan brukes i tilfeller der man kanskje vil vise tid i henhold til tidssonen til en bestemt region. Dette kan gjøres ved hjelp av pytz-modul av Python. Denne modulen tjener dato- og klokkeslettkonverteringsfunksjonene og hjelper brukere som betjener internasjonale klientbaser.
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> ))> |
Produksjon
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