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
- Clase de fecha de Python
- Clase de tiempo de Python
- Clase de fecha y hora de Python
- Clase delta de tiempo de Python
- Python DateTime.tzinfo()
- Zona horaria de Python DateTime
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>