En este artículo, trabajaremos con objetos Datetime y aprenderemos sobre su comportamiento cuando se introduzcan zonas horarias. Vamos a trabajar con el módulo de fecha y hora de Python .
Obtener un objeto de fecha y hora
Método 1 : Usar el método now()
Una manera muy fácil de obtener un objeto Datetime es usar el método datetime.now() . Un objeto DateTime es una instancia/objeto de la clase datetime.datetime . El método now() devuelve un objeto que representa la fecha y la hora actuales.
Python
# importing datetime module import datetime # getting the datetime object # of current date and time print(datetime.datetime.now())
Producción:
2022-01-17 17:15:50.838373
Método 2 : Definir el objeto Datetime manualmente
También podemos declarar el objeto DateTime manualmente
Python
# importing datetime module import datetime # initialising the datetime object obj = datetime.datetime(2001, 12, 9) print(obj)
Producción:
2001-12-09 00:00:00
Después de esto, aprenderemos a formatear nuestros objetos Datetime.
Dar formato a objetos de fecha y hora
A veces necesitamos imprimir nuestros objetos de fecha y hora en diferentes formatos. Para estas operaciones, vamos a utilizar el método strftime() . La sintaxis de strftime() es:
Sintaxis : strftime (formato)
Python
# importing datetime object import datetime # initialising datetime object obj = datetime.datetime(2001, 12, 9) # Example 1 print(obj.strftime("%a %m %y")) # Example 2 print(obj.strftime("%m-%d-%Y %T:%M%p"))
Producción:
Sun 12 01 12-09-2001 00:00:00:00AM
Podemos obtener diferentes atributos del objeto de fecha y hora. En el siguiente código, vamos a obtener las horas, los minutos y los segundos.
Python
# importing datetime object import datetime # initialising datetime object obj = datetime.datetime(2001, 12, 9, 12, 11, 23) # Hours print(obj.hour) # Minutes print(obj.minute) # Seconds print(obj.second)
Producción:
12 11 23
También podemos obtener un objeto de fecha y hora utilizando el método strptime() , en el que obtenemos un objeto de fecha y hora de una string. Dado que las strings que usamos se pueden formatear de cualquier forma, debemos especificar el formato esperado. Para entender esto, veamos la sintaxis de strptime() :
Sintaxis : datetime.strptime(datos,formato_esperado)
Parámetros :
- data : Nuestra hora y fecha pasadas como una string en un formato particular
- formato_esperado : el formato en el que se presentan los datos en el primer parámetro
Python
# importing datetime object import datetime # using strptime() method print(datetime.datetime.strptime("Jan 1, 2013 12:30 PM", "%b %d, %Y %I:%M %p"))
Producción:
2013-01-01 12:30:00
Trabajar con zonas horarias
Los objetos DateTime con los que hemos estado trabajando hasta ahora son los que se conocen como objetos DateTime ingenuos. Un objeto DateTime ingenuo no tiene ninguna información sobre la zona horaria. Podemos verificar esto usando la propiedad tzinfo .
Python
# importing datetime object import datetime # defining the object obj = datetime.datetime(2001, 11, 15, 1, 20, 25) # checking timezone information print(obj.tzinfo)
Producción:
None
Para configurar nuestras propias zonas horarias, debemos comenzar a usar el módulo pytz . En el siguiente ejemplo, primero crearemos un objeto DateTime y luego crearemos un objeto de zona horaria. Luego localizaremos ese objeto de zona horaria en el objeto DateTime y verificaremos la propiedad tzinfo.
Python
# importing datetime and pytz import datetime import pytz # defining the object obj = datetime.datetime(2001, 11, 15, 1, 20, 25) # defining the timezone tz = pytz.timezone('Asia/Kolkata') # localising the datetime object # to the timezone aware_obj = tz.localize(obj) # checking timezone information print(aware_obj.tzinfo)
Salida :
Asia/Kolkata
Conversión del objeto DateTime de una zona horaria a otra
Para convertir el objeto DateTime de una zona horaria a otra, necesitamos usar el método astimezone() .
Sintaxis : DateTimeObject.astimezone(tz=Ninguno)
tz : la zona horaria especificada a la que se debe convertir DateTimeObject
Devuelve : una instancia de fecha y hora según el parámetro de zona horaria especificado tz
Python
# importing datetime and pytz import datetime import pytz # defining the object and localising it to a timezone obj = datetime.datetime(2001, 11, 15, 1, 20, 25) tz = pytz.timezone('Asia/Kolkata') obj = tz.localize(obj) # Creating a new timezone new_tz = pytz.timezone('America/New_York') # Changing the timezone of our object new_tz_time = obj.astimezone(new_tz) # Printing out new time print(new_tz_time)
Producción:
2001-11-14 14:50:25-05:00
Trabajando con la clase timedelta
Podemos verificar la diferencia entre dos objetos DateTime que están localizados en la misma zona horaria o son ingenuos. En el siguiente ejemplo, vamos a crear dos objetos DateTime localizados en la misma zona horaria y verificar su diferencia. La diferencia del tiempo devuelto debe ser un objeto de la clase timedelta.
Python
# importing datetime and pytz import datetime import pytz # defining the objects obj1 = datetime.datetime(2001, 11, 15, 1, 20, 25) obj2 = datetime.datetime(2001, 6, 3, 2, 10, 12) # Defining the timezone tz = pytz.timezone('Asia/Kolkata') # localising the objects to the timezone obj1 = tz.localize(obj1) obj2 = tz.localize(obj2) # printing the differences print(obj2-obj1) print(obj1-obj2) # Checking the object type of the # difference returned print(type(obj1-obj2))
Salida :
-165 days, 0:49:47 164 days, 23:10:13 <class 'datetime.timedelta'>
No solo las diferencias, los objetos timedelta también se pueden usar para la suma. Si agregamos un objeto timedelta a un objeto datetime, obtenemos otro objeto datetime que tiene el timedelta factorizado como la diferencia con el primer objeto datetime. Veamos el ejemplo:
Python
# importing datetime and pytz import datetime import pytz # defining the objects obj = datetime.datetime(2001, 11, 15, 1, 20, 25) # defining a timedelta diff = datetime.timedelta(days=90, hours=1) # getting a datetime object # that is 90 days and 1 hour ahead new_obj = obj+diff # Our final answer print(new_obj)
Producción:
2002-02-13 02:20:25
Publicación traducida automáticamente
Artículo escrito por pranavhfs1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA