logo

Mòdul datetime Python

A Python, la data i l'hora no són tipus de dades propis, sinó un mòdul anomenat Data i hora a Python es pot importar per treballar amb la data i l'hora. Mòdul Python Datetime ve integrat a Python, de manera que no cal instal·lar-lo externament.

En aquest article, explorarem Com DateTime en Python funciona i quines són les classes principals del mòdul DateTime a Python.

Taula de contingut



Mòdul Python DateTime

Python Datetime El mòdul ofereix classes per treballar amb data i hora. Aquestes classes proporcionen diverses funcions per tractar dates, hores i intervals de temps. Date i DateTime són un objecte a Python, de manera que quan els manipuleu, esteu manipulant objectes i no cadenes o marques de temps.

El mòdul DateTime es classifica en 6 classes principals:

  • data – Una data ingènua idealitzada, suposant que el calendari gregorià actual sempre ha estat, i sempre serà, vigent. Els seus atributs són l'any, el mes i el dia. podeu consultar - Python DateTime - Classe de data
  • temps – Un temps idealitzat, independent de qualsevol dia en concret, suposant que cada dia té exactament 24*60*60 segons. Els seus atributs són hora, minut, segon, microsegon i tzinfo. Podeu consultar - Python DateTime - Classe de temps
  • data i hora – És una combinació de data i hora juntament amb els atributs any, mes, dia, hora, minut, segon, microsegon i tzinfo. Podeu consultar - Python DateTime - Classe DateTime
  • delta del temps – Una durada que expressa la diferència entre dues instàncies de data, hora o datatime amb una resolució de microsegons. Podeu consultar - Python DateTime - Classe Timedelta
  • tzinfo – Proporciona objectes d'informació de zona horària. Podeu consultar - Python – datetime.tzinfo()
  • fus horari – Una classe que implementa la classe base abstracta tzinfo com a desplaçament fix de l'UTC (Nou a la versió 3.2). Podeu consultar - Gestió de la zona horària en Python

Classe de data Python

La classe de data s'utilitza per crear una instancia d'objectes de data a Python. Quan s'instancia un objecte d'aquesta classe, representa una data en el format AAAA-MM-DD . El constructor d'aquesta classe necessita tres arguments obligatoris any, mes i data.

Sintaxi de la classe Python Date

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

Els arguments han d'estar en l'interval següent:

  • MINYEAR <= any <= MAXYEAR
  • 1 <= mes <= 12
  • 1 <= dia <= nombre de dies en el mes i l'any determinats

Nota – Si l'argument no és un nombre enter, generarà un TypeError i si està fora de l'interval, es generarà un ValueError.

Objecte de data que representa dades en Python

Inicialització del constructor i passant arguments en el format any, mes i data.

Python 3




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

>

>

Sortida:

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

Obteniu la data actual

Per retornar la data local actual s'utilitza la funció today() de la classe de data. La funció today() inclou diversos atributs (any, mes i dia). Aquests es poden imprimir individualment.

Python 3




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

>

edat de deol assolellada
>

Sortida

Today's date is 2021-08-19>

Obteniu l'any, el mes i la data d'avui

Podem obtenir els atributs any, mes i data de l'objecte data utilitzant l'atribut year, month i data de la classe de data.

Python 3




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

>

>

Sortida

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

Obteniu la data de la marca de temps

Podem crear objectes de data a partir de marques de temps y= utilitzant el mètode fromtimestamp(). La marca de temps és el nombre de segons des de l'1 de gener de 1970 a l'UTC fins a una data concreta.

Python 3




from> datetime>import> datetime> # Getting Datetime from timestamp> date_time>=> datetime.fromtimestamp(>1887639468>)> print>(>'Datetime from timestamp:'>, date_time)>

>

>

Sortida

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

Converteix la data en cadena

Podem convertir l'objecte de data en una representació de cadena utilitzant dues funcions isoformat() i strftime().

Python 3




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

>

>

Sortida

String Representation 2021-08-19>

Llista de mètodes de classe de dates

Nom de la funció

Descripció

ctime() Retorna una cadena que representa la data
des d'isocalendar() Retorna una data corresponent al calendari ISO
des d'isoformat() Retorna un objecte data a partir de la cadena de representació de la data
des de l'ordinal () Retorna un objecte de data de l'ordinal gregorià prolèptic, on l'1 de gener de l'any 1 té l'ordinal 1
fromtimestamp() Retorna un objecte de data des de la marca de temps POSIX
isocalendar () Retorna un any, una setmana i un dia feiner
isoformat() Retorna la representació de cadena de la data
isoweekday() Retorna el dia de la setmana com un nombre enter on dilluns és 1 i diumenge és 7
substituir () Canvia el valor de l'objecte de data amb el paràmetre donat
strftime() Retorna una representació de cadena de la data amb el format donat
timetuple() Retorna un objecte de tipus time.struct_time
avui () Retorna la data local actual
toordinal () Retorna l'ordinal gregorià prolèptic de la data, on l'1 de gener de l'any 1 té l'ordinal 1
dia laborable () Retorna el dia de la setmana com a nombre enter, on dilluns és 0 i diumenge és 6

Classe de Python Time

La classe de temps crea l'objecte de temps que representa l'hora local, independentment de qualsevol dia.

Sintaxi del constructor:

classe datetime.time(hora=0, minut=0, segon=0, microsegon=0, tzinfo=Cap, *, plec=0)

Tots els arguments són opcionals. tzinfo pot ser Cap, en cas contrari, tots els atributs han de ser enters en l'interval següent:

  • 0 <= hora < 24
  • 0 <= minut < 60
  • 0 <= segon < 60
  • 0 <= microsegon < 1000000
  • plegar [0, 1]

Exemple 1: objecte de temps que representa el temps a Python

Python 3




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

>

>

Sortida:

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

Exemple 2: obteniu hores, minuts, segons i microsegons

Després de crear un objecte temporal, els seus atributs també es poden imprimir per separat.

Python 3




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

>

>

Sortida:

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

Exemple 3: Converteix l'objecte Time a String

Podem convertir l'objecte de temps en cadena mitjançant el mètode isoformat().

Python 3




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

>

>

Sortida

String Representation: 12:24:36.001212>

Llista de mètodes de classe de temps

Nom de la funció

Descripció

dst() Retorna tzinfo.dst() és tzinfo no és Cap
des d'isoformat() Retorna un objecte de temps a partir de la cadena de representació del temps
isoformat() Retorna la representació de cadena del temps a partir de l'objecte temps
substituir () Canvia el valor de l'objecte de temps amb el paràmetre donat
strftime() Retorna una representació de cadena de l'hora amb el format donat
tzname() Retorna tzinfo.tzname() és tzinfo no és Cap
utcoffset() Retorna tzinfo.utcffsets() és tzinfo no és Cap

Classe Python Datetime

El Classe DateTime conté informació tant sobre la data com l'hora. Com un objecte data, datetime assumeix el calendari gregorià actual estès en ambdues direccions; com un objecte de temps, datetime suposa que hi ha exactament 3600 * 24 segons cada dia.

Sintaxi del constructor:

classe datetime.datetime(any, mes, dia, hora=0, minut=0, segon=0, microsegon=0, tzinfo=Cap, *, plec=0)

Els arguments de l'any, el mes i el dia són obligatoris. tzinfo pot ser Cap, la resta de tots els atributs han de ser un nombre enter en l'interval següent:

  • MINYEAR <= any <= MAXYEAR
  • 1 <= mes <= 12
  • 1 <= dia <= nombre de dies en el mes i l'any determinats
  • 0 <= hora < 24
  • 0 <= minut < 60
  • 0 <= segon < 60
  • 0 <= microsegon < 1000000
  • plegar [0, 1]

Nota – Passar un argument que no sigui enter generarà un TypeError i passar arguments fora de l'interval generarà ValueError.

Objecte DateTime que representa DateTime a Python

Python 3




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

>

>

Sortida:

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

Obteniu any, mes, hora, minut i marca de temps

Després de crear un objecte DateTime, els seus atributs també es poden imprimir per separat.

Python 3




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

>

>

Sortida:

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

Data i hora actuals

Podeu imprimir la data i l'hora actuals mitjançant la funció Datetime.now(). La funció now() retorna la data i l'hora locals actuals.

Python 3




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

>

>

Sortida:

Current date and time is 2019-10-25 11:12:11.289834>

Converteix Python Datetime a String

Podem convertir Datetime en cadena a Python utilitzant el datetime.strftime i mètodes datetime.isoformat.

Python 3


in.next java



from> datetime>import> datetime as dt> # Getting current date and time> now>=> dt.now()> string>=> dt.isoformat(now)> print>(string)> print>(>type>(string))>

>

>

Sortida

2021-08-19T18:13:25.346259>

Llista de mètodes de classe Datetime

Nom de la funció

Descripció

astimezone() Retorna l'objecte DateTime que conté informació de la zona horària.
combinar () Combina els objectes de data i hora i retorna un objecte DateTime
ctime() Retorna una representació de cadena de data i hora
data() Retorna l'objecte de classe Date
des d'isoformat() Retorna un objecte datetime a partir de la cadena de representació de la data i l'hora
des de l'ordinal () Retorna un objecte data de l'ordinal gregorià prolèptic, on l'1 de gener de l'any 1 té l'ordinal 1. L'hora, el minut, el segon i el microsegon són 0.
fromtimestamp() Data i hora de retorn de la marca de temps POSIX
isocalendar () Retorna un any, una setmana i un dia feiner
isoformat() Retorna la representació de cadena de data i hora
isoweekday() Retorna el dia de la setmana com a nombre enter, on dilluns és 1 i diumenge és 7
ara() Retorna la data i l'hora locals actuals amb el paràmetre tz
substituir () Canvia els atributs específics de l'objecte DateTime
strftime() Retorna una representació de cadena de l'objecte DateTime amb el format donat
strptime() Retorna un objecte DateTime corresponent a la cadena de data
temps() Retorna l'objecte de classe Time
timetuple() Retorna un objecte de tipus time.struct_time
timetz() Retorna l'objecte de classe Time
avui () Retorna DateTime local amb tzinfo com a Cap
toordinal () Retorna l'ordinal gregorià prolèptic de la data, on l'1 de gener de l'any 1 té l'ordinal 1
tzname() Retorna el nom de la zona horària
utcfromtimestamp() Torna UTC des de la marca de temps POSIX
utcoffset() Retorna el desplaçament UTC
utcnow() Retorna la data i l'hora UTC actuals
dia laborable () Retorna el dia de la setmana com a nombre enter, on dilluns és 0 i diumenge és 6

Classe Python Timedelta

La classe timedelta de Python s'utilitza per calcular diferències en les dates i també es pot utilitzar per a manipulacions de dates a Python. És una de les maneres més fàcils de realitzar manipulacions de dates.

Sintaxi del constructor:

classe datetime.timedelta(dies=0, segons=0, microsegons=0, mil·lisegons=0, minuts=0, hores=0, setmanes=0)
Devolucions: Data

Afegiu dies a l'objecte DateTime

Demostració de la funció timedelta

Python 3




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

>

>

Sortida:

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>

Diferència entre dues dates i hores

Les diferències de data i hora també es poden trobar amb aquesta classe.

Python 3




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

>

>

Sortida:

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>

Operacions suportades per Timedelta Class

Operador

Descripció

Addició (+) Afegeix i retorna dos objectes timedelta
Resta (-) Resta i retorna dos objectes timedelta
Multiplicació (*) Multiplica l'objecte timedelta amb float o int
Divisió (/) Divideix l'objecte timedelta amb float o int
Divisió de planta (//) Divideix l'objecte timedelta amb float o int i retorna el valor int de floor de la sortida
Mòdul (%) Divideix dos objectes timedelta i retorna la resta
+(delta del temps) Retorna el mateix objecte timedelta
-(delta temporal) Retorna la resultant de -1*timedelta
abs (delta de temps) Retorna +(timedelta) si timedelta.days> 1=0 sinó retorna -(timedelta)
str (timedelta) Retorna una cadena amb la forma (+/-) dia[s], HH:MM:SS.UUUUUU
repr(timedelta) Retorna la representació de cadena en forma de crida al constructor

Format DateTime en Python

El format de DateTime pot ser molt necessari, ja que la representació de la data pot variar d'un lloc a un altre. En alguns països, pot ser aaaa-mm-dd i en altres països, pot ser dd-mm-aaaa. Per formatar Python Datetime, es poden utilitzar les funcions strptime i strftime.

Python Datetime strftime

Un mètode strftime() converteix la data, l'hora o l'objecte DateTime donats a la representació de cadena del format donat.

Format Python Datetime

Programa Python per demostrar la funció strftime().

Python 3




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

>

>

Sortida

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>

Nota: Per a més informació, consulteu mètode strftime(). .

Python DateTime strptime

strptime() crea un objecte DateTime a partir de la cadena donada.

Exemple: DateTime strptime

Python 3




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

>

>

Sortida

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

El funció datetime.now(). no conté informació sobre les zones horàries. Només fa ús de l'hora actual del sistema. Tzinfo és una classe base abstracta en Python. No es pot instanciar directament. Una subclasse concreta ha de derivar d'aquesta classe abstracta i implementar els mètodes que ofereix.

Llista d'objectes Python DateTime.tzinfo().

Nom de la funció

Descripció

dst() Retorna tzinfo.dst() és tzinfo no és Cap
fromutc() L'objectiu d'aquesta funció és ajustar les dades de data i hora,
retornant una DateTime equivalent a l'hora local de si mateix.
tzname() Retorna tzinfo.tzname() és tzinfo no és Cap
utcoffset() Retorna tzinfo.utcffsets() és tzinfo no és Cap

Exemple

La instància de la classe tzinfo es pot proporcionar als constructors d'objectes DateTime i time. S'utilitza en escenaris com ara convertir l'hora local a UTC o comptabilitzar l'horari d'estiu.

Python 3




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

>

>

Sortida:

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

Zona horària de Python DateTime

Les zones horàries de DateTime es poden utilitzar en el cas en què es vulgui mostrar l'hora segons la zona horària d'una regió específica. Això es pot fer utilitzant el mòdul pytz de Python. Aquest mòdul ofereix les funcionalitats de conversió de data i hora i ajuda els usuaris que donen servei a bases de clients internacionals.

subcadena de retall de javascript

Python 3




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

>

>

Sortida

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>