C贸mo obtener la fecha y hora actuales en Python

    Introducci贸n

    Registrar, guardar registros en la base de datos y acceder a archivos son tareas comunes en las que trabaja un programador. En cada uno de esos casos, la fecha y la hora juegan un papel importante en la preservaci贸n del significado y la integridad de los datos. Los programadores a menudo necesitan interactuar con la fecha y la hora.

    En este art铆culo, aprenderemos c贸mo obtener la fecha y la hora actuales usando la funci贸n incorporada de Python fecha y hora m贸dulo. Con ese m贸dulo, podemos obtener todos los datos relevantes en un objeto o extraer la fecha y la hora por separado.

    Tambi茅n aprenderemos c贸mo ajustar nuestra fecha y hora para diferentes zonas horarias. Finalmente, veremos c贸mo convertir datetime objetos a las populares marcas de tiempo de Unix o Epoch.

    Obtener la fecha y hora actuales con datetime

    los datetime El m贸dulo contiene varias clases para obtener informaci贸n sobre la fecha y la hora:

    • datetime.date: Almacena el d铆a, mes y a帽o o una fecha
    • datetime.time: Almacena el tiempo en horas, minutos, segundos y microsegundos. Esta informaci贸n es independiente de cualquier fecha
    • datetime.datetime: Almacena ambos date y time atributos

    Obtengamos la fecha y hora actuales con un datetime.datetime objeto, ya que es m谩s f谩cil de extraer date y time objetos de ella. Primero, importemos el datetime m贸dulo:

    from datetime import datetime
    

    Si bien parece extra帽o al principio, estamos obteniendo la datetime clase de la datetime m贸dulo, que son dos cosas separadas.

    Podemos usar el now() funci贸n para obtener un objeto con la fecha y hora actual:

    current_datetime = datetime.now()
    print(current_datetime)
    

    Ejecutar este archivo nos dar谩 el siguiente resultado:

    2019-12-13 12:18:18.290623
    

    los now() La funci贸n nos dio un objeto con toda la fecha y hora del momento en que fue creado. Cuando lo imprimimos, Python formatea autom谩ticamente el objeto en una cadena para que los humanos puedan leerlo f谩cilmente. Puede leer nuestra gu铆a sobre C贸mo formatear fechas en Python para aprender varias formas de imprimir la hora.

    Puede obtener atributos individuales de la fecha y la hora de esta manera:

    print(current_datetime.year)            # 2019
    print(current_datetime.month)           # 12
    print(current_datetime.day)             # 13
    print(current_datetime.hour)            # 12
    print(current_datetime.minute)          # 18
    print(current_datetime.second)          # 18
    print(current_datetime.microsecond)     # 290623
    

    los now() El m茅todo es perfecto para capturar un momento. Sin embargo, es redundante cuando solo le importa la fecha o la hora, pero no ambas. 驴C贸mo podemos obtener solo informaci贸n sobre la fecha?

    Obtener la fecha actual

    Hay dos formas de obtener la fecha actual en Python. En la consola de Python, podemos obtener la fecha de un datetime objeto con el date() m茅todo:

    >>> from datetime import datetime
    >>> current_date = datetime.now().date()
    >>> print(current_date)
    2019-12-13
    

    Sin embargo, parece un desperdicio inicializar un datetime Objeto solo para capturar la fecha. Una alternativa ser铆a utilizar el today() m茅todo del date clase:

    >>> from datetime import date
    >>> current_date = date.today()
    >>> print(current_date)
    2019-12-13
    

    los datetime.date la clase representa una fecha del calendario. Sus year, monthy day se puede acceder a los atributos de la misma manera que accedemos a ellos en el datetime objeto.

    Por ejemplo, este print declaraci贸n obtiene cada atributo, y tambi茅n usa el weekday() m茅todo para obtener el d铆a de la semana:

    >>> print("It's the %dth day of the week, %dth day of the %dth month of the %dth year" %
    ... (current_date.weekday()+1, current_date.day, current_date.month, current_date.year))
    It's the 5th day of the week, 13th day of the 12th month of the 2019th year
    

    Nota: Los weekday() El m茅todo devuelve un n煤mero entero entre 0 y 6 para representar el d铆a de la semana. 0 corresponde al lunes. Por lo tanto, en nuestro ejemplo agregamos 1 para imprimir el quinto d铆a de la semana (viernes), aunque el weekday() m茅todo devuelto 4.

    Ahora que podemos obtener la fecha actual por s铆 sola, veamos c贸mo podemos obtener la hora actual.

    Obtener la hora actual

    Capturamos la hora actual de un datetime objeto usando el time() m茅todo:

    >>> from datetime import datetime
    >>> current_time = datetime.now().time()
    >>> print(current_time)
    12:18:18.290623
    

    A diferencia de la recuperaci贸n de fechas, no existe un atajo para capturar la hora actual directamente. los datetime.time class representa una noci贸n de tiempo en horas, minutos, segundos y microsegundos, cualquier cosa que sea menos de un d铆a.

    Como el datetime objeto, podemos acceder a sus atributos directamente. Aqu铆 hay un ejemplo donde imprimimos el current_time en una frase:

    >>> print("It's %d o'clock. To be exact, it's %d:%d and %d seconds with %d microseconds" %
    ... (current_time.hour, current_time.hour, current_time.minute, current_time.second, current_time.microsecond))
    It's 12 o'clock. To be exact, it's 12:18 and 18 seconds with 290623 microseconds
    

    Por defecto, el now() La funci贸n devuelve la hora de su zona horaria local. 驴Qu茅 pasar铆a si tuvi茅ramos que convertirlo en uno diferente que se estableci贸 en la preferencia de un usuario? Veamos c贸mo podemos proporcionar informaci贸n de la zona horaria para localizar time objetos.

    Obtener la fecha y la hora actuales en una zona horaria diferente

    los now() acepta una zona horaria como argumento, de modo que el datetime objeto que se est谩 generando se ajustar谩 adecuadamente. Primero, necesitamos obtener datos de la zona horaria a trav茅s del Pytz biblioteca.

    Instala el pytz biblioteca con pip si a煤n no est谩 disponible en su computadora:

    $ pip3 install pytz
    

    Ahora, usemos pytz para obtener la fecha y hora actual si estuvi茅ramos en Berl铆n:

    >>> import pytz
    >>> from datetime import datetime
    >>> tz = pytz.timezone('Europe/Berlin')
    >>> berlin_current_datetime = datetime.now(tz)
    >>> print(berlin_current_datetime)
    2019-12-14 00:20:50.840350+01:00
    

    los berlin_current_datetime seria un datetime objeto con todas las propiedades y funciones que vimos anteriormente, pero ahora encaja perfectamente con lo que es para alguien que vive all铆.

    Si desea obtener la hora en UTC, puede utilizar el pytz m贸dulo como antes:

    >>> import pytz
    >>> from datetime import datetime
    >>> utc_current_datetime = datetime.now(pytz.timezone("UTC"))
    >>> print(utc_current_datetime)
    2019-12-13 23:20:50.840350+00:00
    

    Alternativamente, para la hora UTC no tiene que usar el pytz m贸dulo en absoluto. los datetime el m贸dulo tiene un timezone propiedad, que se puede utilizar as铆:

    >>> from datetime import datetime, timezone
    >>> utc_current_datetime = datetime.now(timezone.utc)
    >>> print(utc_current_datetime)
    2019-12-13 23:20:50.840350+00:00
    

    Ahora que podemos convertir nuestras fechas y horas para que coincidan con diferentes zonas horarias, veamos c贸mo podemos convertirlo a uno de los formatos m谩s utilizados en inform谩tica: las marcas de tiempo Unix.

    Conversi贸n de marcas de tiempo en fechas y horas

    Los sistemas inform谩ticos miden el tiempo en funci贸n del n煤mero de segundos transcurridos desde la 茅poca Unix, es decir, 00:00:00 UTC del 1 de enero de 1970. Es com煤n que las aplicaciones, bases de datos y protocolos utilicen una marca de tiempo para mostrar el tiempo.

    Puede obtener la marca de tiempo actual en Python usando el time biblioteca:

    >>> import time
    >>> print(time.time())
    1576280665.0915806
    

    los time.time() La funci贸n devuelve un n煤mero flotante con la marca de tiempo de Unix. Puede convertir una marca de tiempo en un datetime objeto usando el fromtimestamp() funci贸n:

    >>> from datetime import datetime
    >>> print(datetime.fromtimestamp(1576280665))
    2019-12-13 19:44:25
    

    Por defecto, el fromtimestamp() devuelve un datetime objeto en su zona horaria. Puede proporcionar una zona horaria como segundo argumento si desea que se localice de manera diferente.

    Por ejemplo, para convertir una marca de tiempo en un datetime objeto en UTC, puede hacer esto:

    >>> from datetime import datetime, timezone
    >>> print(datetime.fromtimestamp(1576280665, timezone.utc))
    2019-12-13 19:44:25+00:00
    

    Por el contrario, puede utilizar el timestamp() m茅todo para convertir un datetime objetar a una marca de tiempo v谩lida:

    >>> from datetime import datetime, timezone
    >>> print(datetime.now(timezone.utc).timestamp())
    1577117555.940705
    

    Conclusi贸n

    Python incorpora datetime esta biblioteca nos permite obtener la fecha y hora actual con la now() funci贸n. Podemos usar el devuelto datetime objeto para extraer solo la parte de la fecha o la parte de la hora. Tambi茅n podemos obtener la fecha actual con el today() funci贸n.

    Por defecto, Python crea datetime objetos en nuestra zona horaria local. Si utilizamos el pytz biblioteca, podemos convertir fechas y horas en diferentes zonas horarias.

    Finalmente, usamos el fromtimestamp() funci贸n para tomar una marca de tiempo Unix para obtener una datetime objeto. Si tenemos un datetime objeto, podemos obtener una marca de tiempo usando su timestamp() m茅todo.

    Etiquetas:

    Deja una respuesta

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