logo

Python datetime-modul

I Python er dato og tid ikke deres egne datatyper, men et modul med navn Dato tid i Python kan importeres til at arbejde med datoen såvel som klokkeslættet. Python Datetime-modul kommer indbygget i Python, så det er ikke nødvendigt at installere det eksternt.

I denne artikel vil vi undersøge hvordan DateTime i Python virker, og hvad er hovedklasserne af DateTime-modulet i Python.

Indholdsfortegnelse



Python DateTime-modul

Python Datetime modul leverer klasser til at arbejde med dato og klokkeslæt. Disse klasser giver flere funktioner til at håndtere datoer, tidspunkter og tidsintervaller. Dato og DateTime er et objekt i Python, så når du manipulerer dem, manipulerer du objekter og ikke strenge eller tidsstempler.

DateTime-modulet er kategoriseret i 6 hovedklasser –

  • dato – En idealiseret naiv dato, hvis man antager, at den nuværende gregorianske kalender altid har været og altid vil være i kraft. Dens egenskaber er år, måned og dag. du kan henvise til – Python DateTime – Datoklasse
  • tid – En idealiseret tid, uafhængig af en bestemt dag, forudsat at hver dag har præcis 24*60*60 sekunder. Dens attributter er time, minut, sekund, mikrosekund og tzinfo. Du kan henvise til – Python DateTime – Tidsklasse
  • dato tid – Det er en kombination af dato og tid sammen med attributterne år, måned, dag, time, minut, sekund, mikrosekund og tzinfo. Du kan henvise til – Python DateTime – DateTime Class
  • tidsdelta – En varighed, der udtrykker forskellen mellem to dato-, klokkeslæts- eller datetime-forekomster til mikrosekundsopløsning. Du kan henvise til – Python DateTime – Timedelta-klasse
  • tzinfo – Det giver tidszoneinformationsobjekter. Du kan henvise til – Python – datetime.tzinfo()
  • tidszone – En klasse, der implementerer tzinfo abstrakt basisklasse som en fast offset fra UTC (Ny i version 3.2). Du kan henvise til – Håndtering af tidszone i Python

Python Dato Klasse

Datoklassen bruges til at instansiere datoobjekter i Python. Når et objekt af denne klasse instansieres, repræsenterer det en dato i formatet ÅÅÅÅ-MM-DD . Konstruktøren af ​​denne klasse har brug for tre obligatoriske argumenter år, måned og dato.

Python Dato klasse Syntaks

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

Argumenterne skal være i følgende område –

  • MINYEAR <= år <= MAXYEAR
  • 1 <= måned <= 12
  • 1 <= dag <= antal dage i den givne måned og år

Bemærk – Hvis argumentet ikke er et heltal, vil det rejse en TypeError, og hvis det er uden for området, vil en ValueError blive rejst.

Datoobjekt, der repræsenterer data i Python

Initialisering af konstruktøren og videregivelse af 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>

>

>

Produktion:

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å den aktuelle dato

For at returnere den aktuelle lokale dato anvendes today() funktion af datoklassen. today()-funktionen kommer med flere attributter (år, måned og dag). Disse kan printes 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)>

>

>

Produktion

Today's date is 2021-08-19>

Få dagens år, måned og dato

Vi kan få år, måned og dato-attributter fra datoobjektet ved at bruge år, måned og dato-attributter 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)>

>

>

Produktion

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

Hent dato fra tidsstempel

Vi kan oprette datoobjekter fra timestamps y=ved hjælp af fromtimestamp()-metoden. Tidsstemplet er antallet af 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)>

>

>

Produktion

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

Konverter dato til streng

Vi kan konvertere datoobjekt til en strengrepræsentation ved hjælp af to funktioner 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>))>

>

>

Produktion

String Representation 2021-08-19>

Liste over datoklassemetoder

Funktionsnavn

Beskrivelse

ctime() Returner en streng, der repræsenterer datoen
fromisocalendar() Returnerer en dato svarende til ISO-kalenderen
fromisoformat() Returnerer et datoobjekt fra strengrepræsentationen af ​​datoen
fraordinal() Returnerer et datoobjekt fra den proleptiske gregorianske ordinal, hvor 1. januar i år 1 har ordinal 1
fromtimestamp() Returnerer et datoobjekt fra POSIX-tidsstemplet
isocalendar() Returnerer en tupel år, uge ​​og ugedag
isoformat() Returnerer strengrepræsentationen af ​​datoen
isoweekday() Returnerer ugedagen som et heltal, hvor mandag er 1 og søndag er 7
erstatte() Ændrer værdien af ​​datoobjektet med den givne parameter
strftime() Returnerer en strengrepræsentation af datoen med det givne format
timetuple() Returnerer et objekt af typen time.struct_time
i dag() Returnerer den aktuelle lokale dato
toordinal() Returner den proleptiske gregorianske ordinal for datoen, hvor 1. januar i år 1 har ordinal 1
hverdag() Returnerer ugedagen som heltal, hvor mandag er 0 og søndag er 6

Python Time klasse

Tidsklassen opretter tidsobjektet, som repræsenterer lokal tid, uafhængigt af enhver dag.

Konstruktørsyntaks:

klasse datetime.time(time=0, minut=0, sekund=0, mikrosekund=0, tzinfo=Ingen, *, fold=0)

Alle argumenter er valgfrie. tzinfo kan være Ingen ellers skal alle attributterne være heltal i følgende område –

  • 0 <= time < 24
  • 0 <= minut < 60
  • 0 <= sekund < 60
  • 0 <= mikrosekund < 1000000
  • fold ind [0, 1]

Eksempel 1: Tidsobjekt, der repræsenterer 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>

>

>

Produktion:

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

Efter oprettelse af et tidsobjekt kan dets attributter også udskrives separat.

Python3




hvordan man får adgang til icloud-billeder

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

>

>

Produktion:

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

Eksempel 3: Konverter Time-objekt til String

Vi kan konvertere tidsobjekt til streng ved hjælp af 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>))>

>

>

Produktion

String Representation: 12:24:36.001212>

Liste over tidsklassemetoder

Funktionsnavn

Beskrivelse

dst() Returnerer tzinfo.dst() er tzinfo er ikke Ingen
fromisoformat() Returnerer et tidsobjekt fra strengrepræsentationen af ​​tiden
isoformat() Returnerer strengrepræsentationen af ​​tid fra tidsobjektet
erstatte() Ændrer værdien af ​​tidsobjektet med den givne parameter
strftime() Returnerer en strengrepræsentation af tiden med det givne format
tzname() Returnerer tzinfo.tzname() er tzinfo er ikke Ingen
utcoffset() Returnerer tzinfo.utcffsets() er tzinfo er ikke Ingen

Python Datetime klasse

Det DatoTid klasse indeholder oplysninger om både dato og klokkeslæt. Som et datoobjekt antager datetime den nuværende gregorianske kalender udvidet i begge retninger; som et tidsobjekt antager datetime, at der er præcis 3600*24 sekunder i hver dag.

Konstruktørsyntaks:

klasse datetime.datetime(år, måned, dag, time=0, minut=0, sekund=0, mikrosekund=0, tzinfo=Ingen, *, fold=0)

Argumenterne for år, måned og dag er obligatoriske. tzinfo kan være Ingen, resten skal alle attributterne være et heltal i følgende område –

hvornår starter q2
  • MINYEAR <= år <= MAXYEAR
  • 1 <= måned <= 12
  • 1 <= dag <= antal dage i den givne måned og år
  • 0 <= time < 24
  • 0 <= minut < 60
  • 0 <= sekund < 60
  • 0 <= mikrosekund < 1000000
  • fold ind [0, 1]

Bemærk – Hvis du sender et andet argument end heltal, vil en TypeError blive fremkaldt, og at sende argumenter uden for intervallet vil hæve ValueError.

DateTime-objekt, der repræsenterer 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)>

>

>

Produktion:

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

Få år, måned, time, minut og tidsstempel

Efter oprettelse af et DateTime-objekt kan dets attributter også udskrives 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())>

>

>

Produktion:

year = 1999 month = 12 hour = 12 minute = 12 timestamp = 945000732.0>

Aktuel dato og klokkeslæt

Du kan udskrive den aktuelle dato og klokkeslæt ved hjælp af Datetime.now()-funktionen. now()-funktionen returnerer den aktuelle lokale dato og tid.

Python3




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

>

>

Produktion:

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 hjælp af 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))>

>

>

Produktion

2021-08-19T18:13:25.346259>

Liste over Datetime-klassemetoder

Funktionsnavn

Beskrivelse

astimezone() Returnerer DateTime-objektet, der indeholder tidszoneoplysninger.
forene() Kombinerer dato- og tidsobjekterne og returnerer et DateTime-objekt
ctime() Returnerer en strengrepræsentation af dato og klokkeslæt
dato() Returner klasseobjektet Dato
fromisoformat() Returnerer et datetime-objekt fra strengrepræsentationen af ​​datoen og klokkeslættet
fraordinal() Returnerer et datoobjekt fra den proleptiske gregorianske ordinal, hvor 1. januar i år 1 har ordinal 1. Time, minut, sekund og mikrosekund er 0
fromtimestamp() Returner dato og klokkeslæt fra POSIX-tidsstempel
isocalendar() Returnerer en tupel år, uge ​​og ugedag
isoformat() Returner strengrepræsentationen af ​​dato og klokkeslæt
isoweekday() Returnerer ugedagen som heltal, hvor mandag er 1 og søndag er 7
nu() Returnerer aktuel lokal dato og tid med tz-parameteren
erstatte() Ændrer de specifikke attributter for DateTime-objektet
strftime() Returnerer en strengrepræsentation af DateTime-objektet med det givne format
strptime() Returnerer et DateTime-objekt svarende til datostrengen
tid() Returner Time-klasseobjektet
timetuple() Returnerer et objekt af typen time.struct_time
timetz() Returner Time-klasseobjektet
i dag() Returner lokal DateTime med tzinfo som Ingen
toordinal() Returner den proleptiske gregorianske ordinal for datoen, hvor 1. januar i år 1 har ordinal 1
tzname() Returnerer navnet på tidszonen
utcfromtimestamp() Returner UTC fra POSIX-tidsstempel
utcoffset() Returnerer UTC offset
utcnow() Returner den aktuelle UTC-dato og -klokkeslæt
hverdag() Returnerer ugedagen som heltal, hvor mandag er 0 og søndag er 6

Python Timedelta klasse

Python timedelta klasse bruges til at beregne forskelle i datoer og kan også bruges til datomanipulationer i Python. Det er en af ​​de nemmeste måder at udføre datomanipulationer på.

Konstruktørsyntaks:

klasse datetime.timedelta(dage=0, sekunder=0, mikrosekunder=0, millisekunder=0, minutter=0, timer=0, uger=0)
Returnering: Dato

Tilføj dage til DateTime-objektet

Demonstrationen af ​​tidsdelta-funktionen

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

>

>

Produktion:

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>

Forskellen mellem to datoer og tidspunkter

Dato- og tidsforskelle kan også findes ved hjælp af denne klasse.

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

>

>

Produktion:

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>

Operationer understøttet af Timedelta Class

Operatør

Beskrivelse

Tilføjelse (+) Tilføjer og returnerer to tidsdelta-objekter
Subtraktion (-) Trækker og returnerer to tidsdelta-objekter
Multiplikation (*) Multiplicerer tidsdelta-objekt med float eller int
Division (/) Opdeler timedelta-objektet med float eller int
Etageopdeling (//) Opdeler timedelta-objektet med float eller int og returnerer int of floor-værdien for output
Modul (%) Deler to tidsdelta-objekter og returnerer resten
+(tidsdelta) Returnerer det samme tidsdelta-objekt
-(tidsdelta) Returnerer resultanten af ​​-1*tidsdelta
abs (tidsdelta) Returnerer +(tidsdelta) hvis timedelta.days> 1=0 ellers returnerer -(tidsdelta)
str(tidsdelta) Returnerer en streng i formen (+/-) dag[r], TT:MM:SS.UUUUUU
repr(tidsdelta) Returnerer strengrepræsentationen i form af konstruktørkaldet

Formater DateTime i Python

Formatering af DateTime kan være meget nødvendigt, da datorepræsentationen kan variere fra sted til sted. I nogle lande kan det være åååå-mm-dd og i andre lande kan det være dd-mm-åååå. For at formatere Python Datetime kan funktionerne strptime og strftime bruges.

Python Datetime strftime

En strftime()-metode konverterer det givne dato, klokkeslæt eller DateTime-objekt til strengrepræsentationen af ​​det givne format.

hvad er selectors i css

Python Datetime-format

Python-program til at demonstrere strftime()-funktionen

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

>

>

Produktion

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>

Bemærk: For mere information, se strftime() metode .

Python DateTime strptime

Strptime() opretter et DateTime-objekt fra den givne streng.

Eksempel: DatoTime 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))>

>

>

Produktion

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

Det datetime.now() funktion indeholder ingen information om tidszoner. Det gør kun brug af den aktuelle systemtid. Tzinfo er en abstrakt basisklasse i Python. Det kan ikke instantieres direkte. En konkret underklasse skal stamme fra denne abstrakte klasse og implementere de metoder, den tilbyder.

Liste over Python DateTime.tzinfo() objekter

Funktionsnavn

Beskrivelse

dst() Returnerer tzinfo.dst() er tzinfo er ikke Ingen
fromutc() Formålet med denne funktion er at justere dato og klokkeslætsdata,
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ørerne. Det bruges i scenarier som at konvertere lokal tid til UTC eller tage højde for 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())>

>

>

Produktion:

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

Python DateTime tidszone

Tidszoner i DateTime kan bruges i tilfælde, hvor man måske ønsker at vise tid i henhold til tidszonen for en bestemt region. Dette kan gøres ved hjælp af pytz modul af Python. Dette modul tjener dato- og klokkeslætkonverteringsfunktioner og hjælper brugere med at betjene internationale 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 af array
>

Produktion

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>