En Python, la fecha y la hora no son un tipo de datos en sí mismos, pero se puede importar un módulo llamado datetime para trabajar con la fecha y la hora. El módulo Python Datetime viene integrado en Python, por lo que no es necesario instalarlo externamente.
El módulo Python Datetime proporciona clases para trabajar con fecha y hora. Estas clases proporcionan una serie de funciones para tratar con fechas, horas e intervalos de tiempo. La fecha y la fecha y la hora son un objeto en Python, por lo que cuando los manipula, en realidad está manipulando objetos y no strings o marcas de tiempo.
El módulo DateTime se clasifica en 6 clases principales:
- fecha : una fecha ingenua idealizada, suponiendo que el calendario gregoriano actual siempre estuvo, y siempre estará, en vigor. Sus atributos son año, mes y día.
- tiempo : un tiempo idealizado, independiente de cualquier día en particular, asumiendo que cada día tiene exactamente 24*60*60 segundos. Sus atributos son hora, minuto, segundo, microsegundo y tzinfo.
- datetime : es una combinación de fecha y hora junto con los atributos año, mes, día, hora, minuto, segundo, microsegundo y tzinfo.
- timedelta : una duración que expresa la diferencia entre dos instancias de fecha, hora o fecha y hora con una resolución de microsegundos.
- tzinfo : proporciona objetos de información de zona horaria.
- zona horaria : una clase que implementa la clase base abstracta tzinfo como un desplazamiento fijo del UTC (nuevo en la versión 3.2).
Clase de fecha
La clase de fecha se usa para instanciar objetos de fecha en Python. Cuando se instancia 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 del constructor:
class datetime.date(year, month, day)
Los argumentos deben estar en el siguiente rango:
- MINYEAR <= año <= MAXYEAR
- 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, se generará un ValueError.
Ejemplo 1: objeto de fecha que representa la fecha en Python
Python3
# Python program to # demonstrate date class # import the date class from datetime import date # initializing constructor # and passing arguments in the # format year, month, 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)
Ejemplo 2: 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)
Today's date is 2021-08-19
Ejemplo 3: obtener el año, el mes y la fecha de hoy
Podemos obtener los atributos de año, mes y fecha del objeto de fecha usando el atributo 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)
Current year: 2021 Current month: 8 Current day: 19
Ejemplo 4: obtener la 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 determinada.
Python3
from datetime import datetime # Getting Datetime from timestamp date_time = datetime.fromtimestamp(1887639468) print("Datetime from timestamp:", date_time)
Datetime from timestamp: 2029-10-25 16:17:48
Ejemplo 5: Convertir fecha en string
Podemos convertir un objeto de fecha en una representación de string 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))
String Representation 2021-08-19 <class 'str'>
Lista de métodos de clase de fecha
Nombre de la función | Descripción |
---|---|
ctime() | Devuelve una string que representa la fecha. |
desdeisocalendario() | Devuelve una fecha correspondiente al calendario ISO |
desdeisoformato() | Devuelve un objeto de fecha de la representación de string 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 |
fromtimestamp() | Devuelve un objeto de fecha de la marca de tiempo POSIX |
isocalendario() | Devuelve una tupla año, semana y día de la semana |
isoformato() | Devuelve la representación de string de la fecha. |
isodía de la semana() | 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 |
strftime() | Devuelve una representación de string de la fecha con el formato dado |
timetuple() | Devuelve un objeto de tipo time.struct_time |
Este Dia() | 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
La clase de tiempo crea el objeto de tiempo que representa la hora local, independientemente de cualquier día.
Sintaxis del constructor:
class datetime.time(hora=0, minuto=0, segundo=0, microsegundo=0, tzinfo=Ninguno, *, fold=0)
Todos los argumentos son opcionales. tzinfo puede ser Ninguno; de lo contrario, todos los atributos deben ser enteros en el siguiente rango:
- 0 <= hora < 24
- 0 <= minuto < 60
- 0 <= segundo < 60
- 0 <= microsegundo < 1000000
- doblar [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("\nTime with one argument", my_time) # Calling constructor with # 0 argument my_time = time() print("\nTime 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)
Producción:
hour = 11 minute = 34 second = 56 microsecond = 0
Ejemplo 3: Convertir objeto de tiempo en string
Podemos convertir un objeto de tiempo en una string 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))
String Representation: 12:24:36.001212 <class 'str'>
Lista de métodos de clase de tiempo
Nombre de la función | Descripción |
---|---|
horario de verano() | Devuelve tzinfo.dst() si tzinfo no es Ninguno |
desdeisoformato() | Devuelve un objeto de tiempo de la representación de string del tiempo |
isoformato() | Devuelve la representación de string de tiempo del objeto de tiempo |
reemplazar() | Cambia el valor del objeto de tiempo con el parámetro dado |
strftime() | Devuelve una representación de string de tiempo con el formato dado |
tzname() | Devuelve tzinfo.tzname() si tzinfo no es Ninguno |
descontar() | Devuelve tzinfo.utcffsets() si tzinfo no es Ninguno |
Clase de fecha y hora
La clase DateTime contiene información sobre la fecha y la hora. Como un objeto de fecha, datetime asume el calendario gregoriano actual extendido en ambas direcciones; como un objeto de tiempo, datetime asume que hay exactamente 3600*24 segundos en cada día.
Sintaxis del constructor:
class datetime.datetime(año, mes, día, hora=0, minuto=0, segundo=0, microsegundo=0, tzinfo=Ninguno, *, fold=0)
Los argumentos año, mes y día son obligatorios. tzinfo puede ser Ninguno, el resto todos los atributos deben ser un número entero en el siguiente rango:
- MINYEAR <= año <= MAXYEAR
- 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 [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.
Ejemplo 1: 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
Ejemplo 2: 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
Ejemplo 3: Fecha y hora actual
Puede imprimir la fecha y la 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
Ejemplo 4: convertir la fecha y hora de Python en una string
Podemos convertir Datetime a string en Python usando los métodos datetime.strftime y 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))
2021-08-19T18:13:25.346259 <class 'str'>
Lista de métodos de clase de fecha y hora
Nombre de la función | Descripción |
---|---|
comozonahoraria() | Devuelve el objeto DateTime que contiene información de la zona horaria. |
combinar() | Combina los objetos de fecha y hora y devuelve un objeto DateTime |
ctime() | Devuelve una representación de string de fecha y hora. |
fecha() | Devuelve el objeto de la clase Date |
desdeisoformato() | Devuelve un objeto de fecha y hora de la representación de string de la fecha y la 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, el minuto, el segundo y el microsegundo son 0 |
fromtimestamp() | Fecha y hora de devolución desde la marca de tiempo POSIX |
isocalendario() | Devuelve una tupla año, semana y día de la semana |
isoformato() | Devuelve la representación de string de fecha y hora. |
isodía de la semana() | 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 |
strftime() | Devuelve una representación de string del objeto DateTime con el formato dado |
strptime() | Devuelve un objeto DateTime correspondiente a la string de fecha |
tiempo() | Devolver el objeto de clase de tiempo |
timetuple() | Devuelve un objeto de tipo time.struct_time |
tiempotz() | Devolver el objeto de clase de tiempo |
Este Dia() | Devolver 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 |
tzname() | Devuelve el nombre de la zona horaria. |
utcfromtimestamp() | Devolver UTC desde la marca de tiempo POSIX |
descontar() | Devuelve el desplazamiento UTC |
ahora() | Devolver la fecha y hora UTC actual |
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
La clase timedelta de Python se usa para calcular las diferencias en las fechas y también se puede usar para la manipulación de fechas en Python. Es una de las formas más fáciles de realizar manipulaciones de fechas.
Sintaxis del constructor:
class datetime.timedelta(días=0, segundos=0, microsegundos=0, milisegundos=0, minutos=0, horas=0, semanas=0)
Devuelve: Fecha
Ejemplo 1: agregar días al objeto de fecha y hora
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)) # 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
Ejemplo 2: diferencia entre dos fechas y horas
La diferencia de fecha y hora también se puede 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 admitidas por Timedelta Class
Operador | Descripción |
---|---|
suma (+) | Agrega y devuelve dos objetos timedelta |
Resta (-) | Resta y devuelve dos objetos timedelta |
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 valor int of floor de la salida |
Módulo (%) | Divide dos objetos timedelta y devuelve el resto |
+(delta de tiempo) | Devuelve el mismo objeto timedelta |
-(timedelta) | Devuelve la resultante de -1*timedelta |
abs (delta de tiempo) | Devuelve el +(timedelta) si timedelta.days > 1=0 de lo contrario devuelve -(timedelta) |
str(delta de tiempo) | Devuelve una string con el formato (+/-) día[s], HH:MM:SS.UUUUUU |
repr(delta de tiempo) | Devuelve la representación de la string en forma de llamada al constructor. |
Formato de fecha y hora
Dar formato a la fecha y hora puede ser muy necesario ya que la representación de la fecha puede diferir de un lugar a otro. Como en algunos países puede ser aaaa-mm-dd y en otros países puede ser dd-mm-aaaa. Para formatear Python Datetime, se pueden usar las funciones strptime y strftime.
Python fecha y hora strftime
El método strftime() convierte la fecha, la hora o el objeto de fecha y hora dados en una representación de string del formato dado.
Ejemplo: formato de fecha y hora de Python
Python3
# Python program to demonstrate # strftime() function 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('\nExample 1:', s) # Example 2 s = now.strftime("%a %-m %y") print('\nExample 2:', s) # Example 3 s = now.strftime("%-I %p %S") print('\nExample 3:', s) # Example 4 s = now.strftime("%H:%M:%S") print('\nExample 4:', s)
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 el método strftime() .
Python DateTime strptime
strptime() crea un objeto de fecha y hora a partir de la string dada.
Ejemplo: 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))
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
Manejo de la zona horaria de Python DateTime
Las zonas horarias en DateTime se pueden usar 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 Python. Este módulo sirve las funciones 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))
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
Publicación traducida automáticamente
Artículo escrito por nikhilaggarwal3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA