Módulo de fecha y hora de Python – Part 1

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)
Producción

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)
Producción

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)
Producción

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))
Producción

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))
Producción

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))
Producción

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

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

Publicación traducida automáticamente

Artículo escrito por nikhilaggarwal3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *