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 datumklass
- Python Time klass
- Python Datetime-klass
- Python Timedelta Class
- Python DateTime.tzinfo()
- Python DateTime tidszon
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>