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 Dato Klasse
- Python Time klasse
- Python Datetime klasse
- Python Timedelta klasse
- Python DateTime.tzinfo()
- Python DateTime tidszone
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>