logo

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




erstatte streng i java
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




hvordan få tilgang til icloud-bilder

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 –

fet tekst i css
  • 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.

hva er velgere i css

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

>

java-streng av array
>

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>