logo

Módulo de fecha y hora de Python

En Python, la fecha y la hora no son tipos de datos en sí mismos, sino un módulo llamado Fecha y hora en Python se puede importar para trabajar tanto con la fecha como con la hora. Módulo de fecha y hora de Python Viene integrado en Python, por lo que no es necesario instalarlo externamente.

En este artículo, exploraremos cómo Fecha y hora en Python funciona y cuáles son las clases principales del módulo DateTime en Python.



Tabla de contenidos

Módulo de fecha y hora de Python

Fecha y hora de Python El módulo proporciona clases para trabajar con fecha y hora. Estas clases proporcionan varias funciones para tratar con fechas, horas e intervalos de tiempo. Date y DateTime son un objeto en Python, por lo que cuando los manipulas, estás manipulando objetos y no cadenas o marcas de tiempo.

El módulo DateTime se clasifica en 6 clases principales:



  • fecha – Una fecha ingenua idealizada, suponiendo que el actual calendario gregoriano siempre estuvo, y siempre estará, vigente. Sus atributos son año, mes y día. puedes referirte a – Python DateTime – Clase de fecha
  • tiempo – Un tiempo idealizado, independiente de cualquier día en particular, suponiendo que cada día tiene exactamente 24*60*60 segundos. Sus atributos son hora, minuto, segundo, microsegundo y tzinfo. Puedes consultar – Python DateTime – Clase de tiempo
  • fecha y hora – Es una combinación de fecha y hora junto con los atributos año, mes, día, hora, minuto, segundo, microsegundo y tzinfo. Puedes consultar – Python DateTime – Clase DateTime
  • delta de tiempo – Una duración que expresa la diferencia entre dos instancias de fecha, hora o fechahora con una resolución de microsegundos. Puedes consultar – Python DateTime – Clase Timedelta
  • tzinfo – Proporciona objetos de información de zona horaria. Puedes consultar – Python: fecha y hora.tzinfo()
  • zona horaria – Una clase que implementa la clase base abstracta tzinfo como un desplazamiento fijo del UTC (nuevo en la versión 3.2). Puedes consultar – Manejo de zona horaria en Python

Clase de fecha de Python

La clase de fecha se utiliza para crear instancias de objetos de fecha en Python. Cuando se crea una instancia de un objeto de esta clase, representa una fecha en el formato AAAA-MM-DD . El constructor de esta clase necesita tres argumentos obligatorios: año, mes y fecha.

Sintaxis de la clase de fecha de Python

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

Los argumentos deben estar en el siguiente rango:

  • MINAÑO <= año <= MAXAÑO
  • 1 <= mes <= 12
  • 1 <= día <= número de días en el mes y año dados

Nota – Si el argumento no es un número entero, generará un TypeError y si está fuera del rango, generará un ValueError.



Objeto de fecha que representa datos en Python

Inicializando el constructor y pasando argumentos en el formato año, mes y fecha.

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>

>

>

Producción:

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

Obtener la fecha actual

Para devolver la fecha local actual, se utiliza la función today() de la clase de fecha. La función today() viene con varios atributos (año, mes y día). Estos se pueden imprimir individualmente.

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

>

>

Producción

Today's date is 2021-08-19>

Obtenga el año, mes y fecha de hoy

Podemos obtener los atributos de año, mes y fecha del objeto de fecha utilizando los atributos de año, mes y fecha de la clase de fecha.

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

>

>

Producción

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

Obtener fecha de la marca de tiempo

Podemos crear objetos de fecha a partir de marcas de tiempo y=usando el método fromtimestamp(). La marca de tiempo es el número de segundos desde el 1 de enero de 1970 en UTC hasta una fecha particular.

Python3




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

>

>

Producción

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

Convertir fecha en cadena

Podemos convertir un objeto de fecha en una representación de cadena usando dos funciones isoformat() y 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>))>

>

leer desde un archivo csv en java

>

Producción

String Representation 2021-08-19>

Lista de métodos de clase de fecha

Nombre de la función

Descripción

tiempo() Devuelve una cadena que representa la fecha.
desdeisocalendario() Devuelve una fecha correspondiente al calendario ISO.
desdeisoformato() Devuelve un objeto de fecha a partir de la representación de cadena de la fecha.
deordinal() Devuelve un objeto de fecha del ordinal gregoriano proléptico, donde el 1 de enero del año 1 tiene el ordinal 1.
de marca de tiempo() Devuelve un objeto de fecha de la marca de tiempo POSIX
isocalendario() Devuelve una tupla de año, semana y día de la semana.
isoformato() Devuelve la representación de cadena de la fecha.
isosemana() Devuelve el día de la semana como un número entero donde el lunes es 1 y el domingo es 7
reemplazar() Cambia el valor del objeto de fecha con el parámetro dado.
tiempo de ejecución() Devuelve una representación de cadena de la fecha con el formato dado
tupla de tiempo() Devuelve un objeto de tipo time.struct_time
hoy() Devuelve la fecha local actual
toordinal() Devuelve el ordinal gregoriano proléptico de la fecha, donde el 1 de enero del año 1 tiene el ordinal 1
día laborable() Devuelve el día de la semana como un número entero donde el lunes es 0 y el domingo es 6

Clase de tiempo de Python

La clase de hora crea el objeto de hora que representa la hora local, independientemente de cualquier día.

Sintaxis del constructor:

clase datetime.time(hora=0, minuto=0, segundo=0, microsegundo=0, tzinfo=Ninguno, *, pliegue=0)

Todos los argumentos son opcionales. tzinfo puede ser Ninguno; de lo contrario, todos los atributos deben ser números enteros en el siguiente rango:

  • 0 <= hora < 24
  • 0 <= minuto < 60
  • 0 <= segundo < 60
  • 0 <= microsegundo < 1000000
  • doblar en [0, 1]

Ejemplo 1: objeto de tiempo que representa el tiempo en 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>

>

>

Producción:

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

Ejemplo 2: obtener horas, minutos, segundos y microsegundos

Después de crear un objeto de tiempo, sus atributos también se pueden imprimir por separado.

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

>

>

convertir una cadena a una fecha

Producción:

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

Ejemplo 3: convertir un objeto de tiempo en una cadena

Podemos convertir un objeto de tiempo en una cadena usando el método 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>))>

>

>

Producción

String Representation: 12:24:36.001212>

Lista de métodos de clase de tiempo

Nombre de la función

Descripción

horario de verano() Devuelve tzinfo.dst() es tzinfo no es Ninguno
desdeisoformato() Devuelve un objeto de hora a partir de la representación de cadena de la hora.
isoformato() Devuelve la representación de cadena del tiempo del objeto de tiempo.
reemplazar() Cambia el valor del objeto de tiempo con el parámetro dado.
tiempo de ejecución() Devuelve una representación de cadena de la hora con el formato dado
tznombre() Devuelve tzinfo.tzname() es tzinfo no es Ninguno
utcoffset() Devuelve tzinfo.utcffsets() es tzinfo no es Ninguno

Clase de fecha y hora de Python

El Clase de fecha y hora contiene información sobre fecha y hora. Como un objeto de fecha, datetime asume el calendario gregoriano actual extendido en ambas direcciones; Al igual que un objeto de tiempo, datetime supone que hay exactamente 3600*24 segundos en cada día.

Sintaxis del constructor:

clase datetime.datetime(año, mes, día, hora=0, minuto=0, segundo=0, microsegundo=0, tzinfo=Ninguno, *, veces=0)

Los argumentos de año, mes y día son obligatorios. tzinfo puede ser Ninguno, resto, todos los atributos deben ser un número entero en el siguiente rango:

  • MINAÑO <= año <= MAXAÑO
  • 1 <= mes <= 12
  • 1 <= día <= número de días en el mes y año dados
  • 0 <= hora < 24
  • 0 <= minuto < 60
  • 0 <= segundo < 60
  • 0 <= microsegundo < 1000000
  • doblar en [0, 1]

Nota – Pasar un argumento que no sea un número entero generará un TypeError y pasar argumentos fuera del rango generará un ValueError.

Objeto DateTime que representa DateTime en 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)>

>

>

Producción:

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

Obtener año, mes, hora, minuto y marca de tiempo

Después de crear un objeto DateTime, sus atributos también se pueden imprimir por separado.

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

>

>

Producción:

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

Fecha y hora actuales

Puede imprimir la fecha y hora actuales utilizando la función Datetime.now(). La función now() devuelve la fecha y hora locales actuales.

Python3




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

>

>

Producción:

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

Convertir fecha y hora de Python en cadena

Podemos convertir Datetime a cadena en Python usando el fechahora.strftime y métodos datetime.isoformat.

Python3




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

>

>

Producción

2021-08-19T18:13:25.346259>

Lista de métodos de clase de fecha y hora

Nombre de la función

Descripción

zona horaria() Devuelve el objeto DateTime que contiene información de zona horaria.
combinar() Combina los objetos de fecha y hora y devuelve un objeto DateTime
tiempo() Devuelve una cadena que representa la fecha y la hora.
fecha() Devolver el objeto de clase Fecha
desdeisoformato() Devuelve un objeto de fecha y hora a partir de la representación de cadena de la fecha y hora.
deordinal() Devuelve un objeto de fecha del ordinal gregoriano proléptico, donde el 1 de enero del año 1 tiene el ordinal 1. La hora, los minutos, los segundos y los microsegundos son 0
de marca de tiempo() Fecha y hora de regreso de la marca de tiempo POSIX
isocalendario() Devuelve una tupla de año, semana y día de la semana.
isoformato() Devuelve la representación de cadena de fecha y hora.
isosemana() Devuelve el día de la semana como un número entero donde el lunes es 1 y el domingo es 7
ahora() Devuelve la fecha y hora locales actuales con el parámetro tz
reemplazar() Cambia los atributos específicos del objeto DateTime.
tiempo de ejecución() Devuelve una representación de cadena del objeto DateTime con el formato dado
tiempo de ejecución() Devuelve un objeto DateTime correspondiente a la cadena de fecha
tiempo() Devolver el objeto de clase Hora
tupla de tiempo() Devuelve un objeto de tipo time.struct_time
tiempotz() Devolver el objeto de clase Hora
hoy() Devuelve DateTime local con tzinfo como Ninguno
toordinal() Devuelve el ordinal gregoriano proléptico de la fecha, donde el 1 de enero del año 1 tiene el ordinal 1
tznombre() Devuelve el nombre de la zona horaria.
utcfromtimestamp() Devolver UTC desde la marca de tiempo POSIX
utcoffset() Devuelve el desplazamiento UTC
utcnow() Devolver la fecha y hora UTC actuales
día laborable() Devuelve el día de la semana como un número entero donde el lunes es 0 y el domingo es 6

Clase delta de tiempo de Python

La clase timedelta de Python se usa para calcular diferencias en fechas y también se puede usar para manipulaciones de fechas en Python. Es una de las formas más sencillas de realizar manipulaciones de fechas.

Sintaxis del constructor:

clase datetime.timedelta(días=0, segundos=0, microsegundos=0, milisegundos=0, minutos=0, horas=0, semanas=0)
Devoluciones : Fecha

Agregar días al objeto DateTime

Demostración de la función timedelta

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

>

>

Producción:

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>

Diferencia entre dos fechas y horas.

Las diferencias de fecha y hora también se pueden encontrar usando esta clase.

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

>

>

Producción:

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>

Operaciones soportadas por la clase Timedelta

Operador

Descripción

Suma (+) Agrega y devuelve dos objetos timedelta.
Resta (-) Resta y devuelve dos objetos delta de tiempo
Multiplicación (*) Multiplica el objeto timedelta con float o int
División (/) Divide el objeto timedelta con float o int
División de piso (//) Divide el objeto timedelta con float o int y devuelve el int del valor mínimo de la salida
Modulo (%) Divide dos objetos timedelta y devuelve el resto
+(delta de tiempo) Devuelve el mismo objeto timedelta
-(delta de tiempo) Devuelve el resultante de -1*timedelta
abdominales (delta de tiempo) Devuelve +(timedelta) si timedelta.days> 1=0 en caso contrario devuelve -(timedelta)
str (delta de tiempo) Devuelve una cadena con el formato (+/-) día[s], HH:MM:SS.UUUUUU
repr(tiempodelta) Devuelve la representación de la cadena en forma de llamada al constructor.

Formatear fecha y hora en Python

Formatear DateTime puede ser muy necesario ya que la representación de la fecha puede diferir de un lugar a otro. En algunos países puede ser aaaa-mm-dd y en otros puede ser dd-mm-aaaa. Para formatear Python Datetime se pueden utilizar las funciones strptime y strftime.

Fecha y hora de Python

Un método strftime() convierte la fecha, hora o objeto DateTime dado a la representación de cadena del formato dado.

Formato de fecha y hora de Python

Programa Python para demostrar la función strftime()

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

>

>

Producción

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: Para obtener más información, consulte método strftime() .

Fecha y hora de Python

strptime() crea un objeto DateTime a partir de la cadena dada.

Ejemplo: Fecha y hora

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

>

>

Producción

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ón datetime.now() no contiene información sobre zonas horarias. Sólo hace uso de la hora actual del sistema. Tzinfo es una clase base abstracta en Python. No se puede crear una instancia directamente. Una subclase concreta debe derivar de esta clase abstracta e implementar los métodos que ofrece.

Lista de objetos Python DateTime.tzinfo()

Nombre de la función

Descripción

horario de verano() Devuelve tzinfo.dst() es tzinfo no es Ninguno
desdeutc() El propósito de esta función es ajustar los datos de fecha y hora,
devolviendo un DateTime equivalente en la hora local de uno mismo.
tznombre() Devuelve tzinfo.tzname() es tzinfo no es Ninguno
utcoffset() Devuelve tzinfo.utcffsets() es tzinfo no es Ninguno

Ejemplo

La instancia de clase tzinfo se puede proporcionar a los constructores de objetos DateTime y time. Se utiliza en escenarios como la conversión de la hora local a UTC o la contabilidad del horario de verano.

Python3

nueva linea en python




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

>

>

Producción:

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

Zona horaria de Python DateTime

Las zonas horarias en DateTime se pueden utilizar en el caso de que se desee mostrar la hora según la zona horaria de una región específica. Esto se puede hacer usando el módulo pytz de Pitón. Este módulo ofrece funcionalidades de conversión de fecha y hora y ayuda a los usuarios que atienden bases de clientes internacionales.

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

>

>

Producción

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>