Python
La biblioteca estándar
fecha y hora - datetime
now()

Trabajando con la Función datetime.now() de Python: Una Guía Integral

En el ámbito de la programación en Python, la función datetime.now() es una herramienta poderosa que se utiliza frecuentemente para una variedad de propósitos. Proporciona una forma sencilla de obtener la fecha y hora actuales, lo que la hace invaluable en campos como el registro de datos, la estampación de tiempo, y la programación. En este blog, profundizaremos en datetime.now(), explorando sus numerosas características y usos, incluyendo cómo manejar diferentes zonas horarias, cómo formatear la salida, y cómo convertir la salida a UTC.

1. La función datetime.now()

El módulo datetime de Python es parte de la biblioteca estándar, y su función now() devuelve la fecha y hora actuales. Por defecto, ésta es la fecha y hora locales. Aquí hay un simple ejemplo de uso:

from datetime import datetime
 
current_time = datetime.now()
print(current_time)

Esto producirá la fecha y hora actuales en el formato YYYY-MM-DD HH:MM:SS.ssssss.

2. Trabajando con zonas horarias

Aunque datetime.now() devuelve por defecto la hora local, es posible obtener la hora actual en cualquier zona horaria utilizando la biblioteca pytz. Así es como se hace:

from datetime import datetime
import pytz
 
madrid_tz = pytz.timezone('Europe/Madrid')
current_time_madrid = datetime.now(madrid_tz)
print(current_time_madrid)

Esto producirá la fecha y hora actuales en Madrid, teniendo en cuenta las reglas del horario de verano.

3. Formateando la salida de datetime.now()

El método strftime() permite formatear el objeto datetime en una cadena de su formato preferido. El método toma un argumento, una cadena de formato, que contiene directivas strftime.

from datetime import datetime
 
current_time = datetime.now()
formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_time)

En este fragmento de código, %Y representa el año en cuatro dígitos, %m representa el mes en dos dígitos, %d representa el día del mes en dos dígitos y %H, %M, %S representan la hora, minuto y segundo, respectivamente.

4. Convertir a UTC o cadena

Es posible obtener la hora actual en UTC usando la función datetime.now() y luego convertirla a una cadena usando strftime():

from datetime import datetime
import pytz
 
utc_now = datetime.now(pytz.UTC)
formatted_utc_now = utc_now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_utc_now)

La hora UTC se utiliza como la hora del mundo o la hora Zulu. En este fragmento de código, se obtiene la fecha y hora actuales en formato UTC y luego se formatea como una cadena.

5. Restando un día

Con los objetos datetime, es posible realizar operaciones aritméticas sencillas. Por ejemplo, para obtener la fecha y hora de ayer, puede restar un objeto timedelta de un día al objeto datetime actual:

from datetime import datetime, timedelta
 
current_time = datetime.now()
yesterday = current_time - timedelta(days=1)
print(yesterday)

6. Sobre el Timestamp y el Epoch

El timestamp se refiere al número total de segundos que han pasado desde la época Unix que es el 1 de enero de 1970. Puede obtener el timestamp actual con el método timestamp(). Este timestamp puede ser útil para la estampación de tiempo o la sincronización de eventos.

from datetime import datetime
 
current_time = datetime.now()
timestamp = current_time.timestamp()
print(timestamp)

7. datetime.now() vs datetime.today()

datetime.now() y datetime.today() devuelven prácticamente lo mismo en la mayoría de los casos, es decir, la fecha y hora actuales en formato local. Sin embargo, datetime.now() acepta un argumento de zona horaria, mientras que datetime.today() no. Por lo tanto, si necesita trabajar con zonas horarias específicas, deberá utilizar datetime.now().

8. Conclusión

La función datetime.now() de Python es una función potente y versátil con una variedad de usos. Esta publicación ha cubierto varios de los aspectos más importantes de la función, pero hay mucho más que explorar en la documentación oficial de Python. ¡Feliz programación!


© 2023 All rights reserved.