logo

Python datetime-modul

I Python är datum och tid inte egna datatyper, utan en modul som heter Datum Tid i Python kan importeras för att arbeta med datum och tid. Python Datetime-modul kommer inbyggt i Python, så det finns inget behov av att installera det externt.

I den här artikeln kommer vi att utforska hur DateTime i Python fungerar och vilka är huvudklasserna för DateTime-modulen i Python.

Innehållsförteckning



Python DateTime-modul

Python Datetime Modulen tillhandahåller klasser för att arbeta med datum och tid. Dessa klasser tillhandahåller flera funktioner för att hantera datum, tider och tidsintervall. Date och DateTime är ett objekt i Python, så när du manipulerar dem manipulerar du objekt och inte strängar eller tidsstämplar.

DateTime-modulen är kategoriserad i 6 huvudklasser –

  • datum – Ett idealiserat naivt datum, förutsatt att den nuvarande gregorianska kalendern alltid var och kommer alltid att vara i kraft. Dess attribut är år, månad och dag. du kan hänvisa till - Python DateTime – Datumklass
  • tid – En idealiserad tid, oberoende av en viss dag, förutsatt att varje dag har exakt 24*60*60 sekunder. Dess attribut är timme, minut, sekund, mikrosekund och tzinfo. Du kan hänvisa till – Python DateTime – Tidsklass
  • datum Tid – Det är en kombination av datum och tid tillsammans med attributen år, månad, dag, timme, minut, sekund, mikrosekund och tzinfo. Du kan hänvisa till – Python DateTime – DateTime Class
  • timedelta – En varaktighet som uttrycker skillnaden mellan två datum-, tid- eller datetime-instanser till mikrosekundsupplösning. Du kan hänvisa till – Python DateTime – Timedelta Class
  • tzinfo – Den tillhandahåller tidszoninformationsobjekt. Du kan hänvisa till – Python – datetime.tzinfo()
  • tidszon – En klass som implementerar den abstrakta basklassen tzinfo som en fast offset från UTC (Ny i version 3.2). Du kan hänvisa till – Hantera tidszon i Python

Python datumklass

Datumklassen används för att instansiera datumobjekt i Python. När ett objekt av den här klassen instansieras representerar det ett datum i formatet ÅÅÅÅ-MM-DD . Konstruktören av denna klass behöver tre obligatoriska argument år, månad och datum.

Python Datum klass Syntax

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

Argumenten måste vara inom följande intervall –

  • MINYEAR <= år <= MAXYEAR
  • 1 <= månad <= 12
  • 1 <= dag <= antal dagar i den givna månaden och året

Notera – Om argumentet inte är ett heltal kommer det att höja ett TypeError och om det ligger utanför intervallet kommer ett ValueError att höjas.

Datumobjekt som representerar data i Python

Initiera konstruktorn och skicka argument i formatet år, månad och 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>

>

>

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

Hämta aktuellt datum

För att returnera det aktuella lokala datumet används today() funktion för datumklassen. today()-funktionen kommer med flera attribut (år, månad och dag). Dessa kan skrivas ut individuellt.

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ånad och datum

Vi kan få år, månad och datum attribut från datumobjektet med hjälp av år, månad och datum attribut för datumklassen.

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

>

>

Produktion

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

Hämta datum från tidsstämpel

Vi kan skapa datumobjekt från timestamps y=med hjälp av fromtimestamp()-metoden. Tidsstämpeln är antalet sekunder från 1 januari 1970 vid UTC till ett visst datum.

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>

Konvertera datum till sträng

Vi kan konvertera datumobjekt till en strängrepresentation med två funktioner isoformat() och 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>

Lista över datumklassmetoder

Funktionsnamn

Beskrivning

ctime() Returnera en sträng som representerar datumet
fromisocalendar() Returnerar ett datum som motsvarar ISO-kalendern
fromisoformat() Returnerar ett datumobjekt från strängrepresentationen av datumet
fromordinal() Returnerar ett datumobjekt från den proleptiska gregorianska ordningen, där 1 januari år 1 har ordningen 1
fromtimestamp() Returnerar ett datumobjekt från POSIX-tidsstämpeln
isocalendar() Returnerar ett tupelår, vecka och veckodag
isoformat() Returnerar strängrepresentationen av datumet
isoweekday() Returnerar veckodagen som ett heltal där måndag är 1 och söndag är 7
byta ut() Ändrar värdet på datumobjektet med den givna parametern
strftime() Returnerar en strängrepresentation av datumet med det givna formatet
timetuple() Returnerar ett objekt av typen time.struct_time
i dag() Returnerar det aktuella lokala datumet
toordinal() Returnera den proleptiska gregorianska ordningen för datumet, där 1 januari år 1 har ordningen 1
veckodag() Returnerar veckodagen som heltal där måndag är 0 och söndag är 6

Python Time klass

Tidsklassen skapar tidsobjektet som representerar lokal tid, oberoende av vilken dag som helst.

Konstruktörssyntax:

klass datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

Alla argument är valfria. tzinfo kan vara Ingen annars måste alla attribut vara heltal i följande intervall –

  • 0 <= timme < 24
  • 0 <= minut < 60
  • 0 <= sekund < 60
  • 0 <= mikrosekund < 1000000
  • vik in [0, 1]

Exempel 1: Tidsobjekt som representerar 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>

bfs vs dfs
>

>

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

Exempel 2: Få timmar, minuter, sekunder och mikrosekunder

Efter att ha skapat ett tidsobjekt kan dess attribut också skrivas 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)>

>

>

Produktion:

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

Exempel 3: Konvertera Time-objekt till String

Vi kan konvertera tidsobjekt till sträng med metoden 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>))>

>

>

Produktion

String Representation: 12:24:36.001212>

Lista över tidklassmetoder

Funktionsnamn

Beskrivning

dst() Returnerar tzinfo.dst() är tzinfo är inte Ingen
fromisoformat() Returnerar ett tidsobjekt från strängrepresentationen av tiden
isoformat() Returnerar strängrepresentationen av tid från tidsobjektet
byta ut() Ändrar värdet på tidsobjektet med den givna parametern
strftime() Returnerar en strängrepresentation av tiden med det givna formatet
tzname() Returnerar tzinfo.tzname() är tzinfo är inte Ingen
utcoffset() Returnerar tzinfo.utcffsets() är tzinfo är inte Ingen

Python Datetime-klass

De DateTime klass innehåller information om både datum och tid. Liksom ett datumobjekt antar datetime den nuvarande gregorianska kalendern förlängd i båda riktningarna; som ett tidsobjekt, antar datetime att det är exakt 3600*24 sekunder på varje dag.

Konstruktörssyntax:

klass datetime.datetime(år, månad, dag, timme=0, minut=0, sekund=0, mikrosekund=0, tzinfo=Ingen, *, fold=0)

Argumenten för år, månad och dag är obligatoriska. tzinfo kan vara Ingen, resten måste alla attribut vara ett heltal i följande intervall –

  • MINYEAR <= år <= MAXYEAR
  • 1 <= månad <= 12
  • 1 <= dag <= antal dagar i den givna månaden och året
  • 0 <= timme < 24
  • 0 <= minut < 60
  • 0 <= sekund < 60
  • 0 <= mikrosekund < 1000000
  • vik in [0, 1]

Notera – Att skicka ett annat argument än heltal kommer att höja en TypeError och att skicka argument utanför intervallet kommer att höja ValueError.

DateTime-objekt som representerar 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ånad, timme, minut och tidsstämpel

Efter att ha skapat ett DateTime-objekt kan dess attribut också skrivas 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())>

>

>

Produktion:

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

Aktuellt datum och tid

Du kan skriva ut aktuellt datum och tid med funktionen Datetime.now() . now()-funktionen returnerar det aktuella lokala datumet och tiden.

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>

Konvertera Python Datetime till String

Vi kan konvertera Datetime till sträng i Python med hjälp av datetime.strftime och datetime.isoformat metoder.

Python3


pandas standardavvikelse



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>

Lista över klassmetoder för datum och tid

Funktionsnamn

Beskrivning

astimezone() Returnerar DateTime-objektet som innehåller tidszoninformation.
kombinera() Kombinerar datum- och tidsobjekten och returnerar ett DateTime-objekt
ctime() Returnerar en strängrepresentation av datum och tid
datum() Returnera klassobjektet Date
fromisoformat() Returnerar ett datetime-objekt från strängrepresentationen av datum och tid
fromordinal() Returnerar ett datumobjekt från den proleptiska gregorianska ordningen, där 1 januari år 1 har ordningen 1. Timmen, minuten, sekunden och mikrosekunden är 0
fromtimestamp() Returnera datum och tid från POSIX tidsstämpel
isocalendar() Returnerar ett tupelår, vecka och veckodag
isoformat() Returnera strängrepresentationen av datum och tid
isoweekday() Returnerar veckodagen som heltal där måndag är 1 och söndag är 7
nu() Returnerar aktuellt lokalt datum och tid med parametern tz
byta ut() Ändrar de specifika attributen för DateTime-objektet
strftime() Returnerar en strängrepresentation av DateTime-objektet med det givna formatet
strptime() Returnerar ett DateTime-objekt som motsvarar datumsträngen
tid() Returnera klassobjektet Time
timetuple() Returnerar ett objekt av typen time.struct_time
timetz() Returnera klassobjektet Time
i dag() Returnera lokal DateTime med tzinfo som None
toordinal() Returnera den proleptiska gregorianska ordningen för datumet, där 1 januari år 1 har ordningen 1
tzname() Returnerar namnet på tidszonen
utcfromtimestamp() Returnera UTC från POSIX tidsstämpel
utcoffset() Returnerar UTC-offset
utcnow() Returnera aktuellt UTC-datum och tid
veckodag() Returnerar veckodagen som heltal där måndag är 0 och söndag är 6

Python Timedelta Class

Python timedelta class används för att beräkna skillnader i datum och kan även användas för datummanipulationer i Python. Det är ett av de enklaste sätten att utföra datummanipulationer.

Konstruktörsyntax:

klass datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
Returer: Datum

Lägg till dagar till DateTime-objektet

Tidsdelta funktion demonstration

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>

Skillnad mellan två datum och tider

Datum- och tidsskillnader kan också hittas med denna klass.

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 som stöds av Timedelta Class

Operatör

Beskrivning

Tillägg (+) Lägger till och returnerar två tidsdeltaobjekt
Subtraktion (-) Subtraherar och returnerar två tidsdeltaobjekt
Multiplikation (*) Multiplicerar tidsdeltaobjekt med float eller int
Division (/) Delar tidsdeltaobjektet med float eller int
Golvindelning (//) Delar tidsdeltaobjektet med float eller int och returnerar int av golvvärdet för utgången
Modul (%) Delar två tidsdeltaobjekt och returnerar resten
+(timedelta) Returnerar samma timedelta-objekt
-(timedelta) Returnerar resultanten av -1*tiddelta
abs(timedelta) Returnerar +(tidsdelta) om timedelta.days> 1=0 annars returnerar -(tidsdelta)
str(tidsdelta) Returnerar en sträng i formen (+/-) dag[s], TT:MM:SS.UUUUUU
repr(timedelta) Returnerar strängrepresentationen i form av konstruktoranropet

Formatera DateTime i Python

Formatering av DateTime kan vara mycket nödvändigt eftersom datumrepresentationen kan skilja sig från plats till plats. I vissa länder kan det vara åååå-mm-dd och i andra länder kan det vara dd-mm-åååå. För att formatera Python Datetime kan funktionerna strptime och strftime användas.

Python Datetime strftime

En strftime()-metod konverterar det givna datumet, tiden eller DateTime-objektet till strängrepresentationen av det givna formatet.

Python Datetime-format

Python-program för att demonstrera 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>

Notera: För mer information, se strftime() metod .

Python DateTime strptime

Strptime() skapar ett DateTime-objekt från den givna strängen.

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

>

>

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

De datetime.now() funktion innehåller ingen information om tidszoner. Den använder bara den nuvarande systemtiden. Tzinfo är en abstrakt basklass i Python. Det kan inte instansieras direkt. En konkret underklass måste härledas från denna abstrakta klass och implementera de metoder som den erbjuder.

Lista över Python DateTime.tzinfo()-objekt

Funktionsnamn

Beskrivning

dst() Returnerar tzinfo.dst() är tzinfo är inte Ingen
fromutc() Syftet med denna funktion är att justera datum och tid,
returnera en motsvarande DateTime i egen lokal tid.
tzname() Returnerar tzinfo.tzname() är tzinfo är inte Ingen
utcoffset() Returnerar tzinfo.utcffsets() är tzinfo är inte Ingen

Exempel

Klassinstansen tzinfo kan tillhandahållas till objektkonstruktörerna DateTime och time. Den används i scenarier som att konvertera lokal tid till UTC eller ta hänsyn till sommartid.

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 tidszon

Tidszoner i DateTime kan användas i de fall man kanske vill visa tid enligt tidszonen för en specifik region. Detta kan göras med hjälp av pytz-modul av Python. Den här modulen betjänar funktionerna för datum- och tidkonvertering och hjälper användare som betjänar internationella kundbaser.

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

>

>

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>