Python FechaHora, HoraDelta, Strftime (Formato) con ejemplos

โšก Resumen inteligente

Python El mรณdulo datetime, junto con las clases date, time y timedelta, maneja fechas, horas e intervalos como objetos. Formatea la salida con strftime(), analiza cadenas y calcula momentos futuros o pasados โ€‹โ€‹mediante aritmรฉtica timedelta.

  • ๐Ÿ”˜ Cinco clases: El mรณdulo datetime agrupa las clases date, time, datetime, timedelta y tzinfo para trabajar con fechas y horas.
  • โ˜‘๏ธ Valores actuales: datetime.now() y date.today() devuelven la fecha y hora actuales, incluyendo el nรบmero del dรญa de la semana.
  • โœ… Formateo: La funciรณn strftime() convierte una fecha y hora en texto legible utilizando cรณdigos de control como %Y, %A y %H.
  • ๐Ÿงช Diferencia de tiempo: Un objeto timedelta mide una duraciรณn y predice fechas futuras o pasadas mediante suma y resta.tracciรณn.
  • ๐Ÿ› ๏ธ Directivas: Los mismos cรณdigos de control manejan strftime() para la salida y strptime() para leer una cadena y convertirla de nuevo en una fecha y hora.
  • ๐Ÿค– Flujos de trabajo de IA: Los sistemas de aprendizaje automรกtico extraen caracterรญsticas de fecha y hora, como el dรญa de la semana y la hora, para los modelos de series temporales.

Python DateTime

In Python, fecha, hora y fechahora Las clases proporcionan una serie de funciones para manejar fechas, horas e intervalos de tiempo. Fecha y fecha y hora en Python Son objetos, asรญ que cuando los manipulas, en realidad estรกs manipulando objetos y no cadenas de texto ni marcas de tiempo. Siempre que manipules fechas u horas, necesitas importar el mรณdulo datetime.

Las clases de fecha y hora en Python se clasifican en 5 clases principales.

  • fecha: manipular solo la fecha (mes, dรญa, aรฑo)
  • time โ€“ Hora independiente del dรญa (Hora, minuto, segundo, microsegundo)
  • datetime: combinaciรณn de hora y fecha (mes, dรญa, aรฑo, hora, segundo, microsegundo)
  • timedelta: una duraciรณn de tiempo utilizada para manipular fechas
  • tzinfoโ€” Un abstracClase t para gestionar zonas horarias

Cรณmo utilizar la clase Date & DateTime

Paso 1) Antes de ejecutar el cรณdigo para el formato de fecha y hora en Python, es importante que importes el Python mรณdulos de fecha y hora como se muestra en la captura de pantalla siguiente.

Usar clase de fecha y hora

Estas declaraciones de importaciรณn son piezas de funcionalidad predefinidas en el Python Biblioteca que permite manipular fechas y horas sin escribir cรณdigo.

Tenga en cuenta los siguientes puntos antes de ejecutar la Python cรณdigo de formato de fecha y hora

from datetime import date

Esta lรญnea le dice al Python intรฉrprete para importar la clase de fecha desde el mรณdulo de fecha y hora en PythonNo estamos escribiendo el cรณdigo para esta funcionalidad de fecha, sino que simplemente la estamos importando para nuestro uso.

Imprimir fecha usando date.today()

La funciรณn date.today() tiene varias propiedades asociadas. Podemos imprimir el dรญa, el mes, el aรฑo y muchas otras cosas.

Veamos un ejemplo

Imprimir fecha usando date.today()

Nรบmero del dรญa laborable de hoy

La funciรณn date.today() tambiรฉn te da el nรบmero del dรญa de la semana. Aquรญ estรก la tabla de dรญas de la semana que comienza con Monday como 0 y domingo como 6.

Dรญa Nรบmero de dรญa de la semana
Monday 0
Martes 1
Miรฉrcoles 2
Jueves 3
Viernes 4
Sรกbado 5
domingo 6

El nรบmero de dรญa de la semana es รบtil para matrices cuyo รญndice depende del dรญa de la semana.

Imprimir fecha usando date.today()

Paso 2) A continuaciรณn, creamos una instancia del objeto de fecha.

Usar clase de fecha y hora

Paso 3) A continuaciรณn, imprimimos la fecha y ejecutamos el cรณdigo.

Usar clase de fecha y hora

El resultado es el esperado.

Python Fecha y hora actuales: ahora() hoy()

Paso 1) Al igual que los objetos de fecha, tambiรฉn podemos usar โ€œOBJETOS DE FECHA Y HORAโ€ in Python. Python Los objetos de fecha y hora dan la fecha junto con la hora en horas, minutos, segundos y milisegundos.

Python Fecha y hora actual

Cuando ejecutamos el cรณdigo para fecha y hora, proporciona el resultado con la fecha y hora actuales.

Paso 2) Con โ€œDATETIME OBJECTโ€, tambiรฉn puedes llamar a la clase de tiempo. Supongamos que queremos imprimir solo la hora actual sin la fecha.

t = datetime.time(datetime.now())
  • Habรญamos importado la clase de tiempo. Le asignaremos el valor actual de tiempo usando datetime.now()
  • Estamos asignando el valor de la hora actual a la variable t.

Y esto me darรก el tiempo justo. Asรญ que ejecutemos este programa.

Python Fecha y hora actual

Bien, como pueden ver, aquรญ tengo la fecha y la hora. Y en la siguiente lรญnea, solo tengo la hora.

Paso 3) Aplicaremos nuestro indexador de dรญas de la semana a nuestra lista de arreglos de dรญas de la semana para saber quรฉ dรญa es hoy.

  • Al operador de dรญas de la semana (wd) se le asigna un nรบmero del 0 al 6, dependiendo del dรญa de la semana actual. Aquรญ hemos declarado la lista de dรญas (lun, mar, miรฉโ€ฆ dom).
  • Utilice ese valor de รญndice para saber quรฉ dรญa es. En nuestro caso, es el nรบmero 2 y representa el miรฉrcoles, por lo que en el resultado imprimirรก "Que es miรฉrcoles".

Python Fecha y hora actual

Aquรญ estรก el cรณdigo completo para obtener la fecha y hora actuales usando datetime ahora

from datetime import date
from datetime import time
from datetime import datetime
def main():
    ##DATETIME OBJECTS
    #Get today's date from datetime class
    today=datetime.now()
    #print (today)
    # Get the current time
    #t = datetime.time(datetime.now())
    #print "The current time is", t
    #weekday returns 0 (monday) through 6 (sunday)
    wd=date.weekday(today)
    #Days start at 0 for monday
    days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]
    print("Today is day number %d" % wd)
    print("which is a " + days[wd])

if __name__== "__main__":
    main()

Cรณmo formatear la salida de fecha y hora con Strftime()

Hasta ahora, hemos aprendido a usar datetime y date objeto en Python. Avanzaremos un paso mรกs y aprenderemos cรณmo utilizar una funciรณn de formato para formatear la hora y la fecha.

Paso 1) Primero veremos un paso sencillo de cรณmo formatear el aรฑo. Es mejor entenderlo con un ejemplo.

Formatear la salida de fecha y hora con Strftime()

  • Se utilizรณ el โ€œFunciรณn strftimeโ€ para formatear.
  • Esta funciรณn utiliza diferentes cรณdigo de control para dar una salida.
  • Cada cรณdigo de control se asemeja a diferentes parรกmetros como aรฑo, mes, dรญa de la semana y fecha. [(%y/%Y โ€“ Aรฑo), (%a/%A- dรญa laborable), (%b/%B- mes), (%d โ€“ dรญa del mes)] .
  • En nuestro caso, es (โ€œ%Yโ€) que se parece al aรฑo, imprime el aรฑo completo con el siglo (por ejemplo, 2018).

Paso 2) Ahora, si reemplaza (โ€œ%Yโ€) con minรบsculas, es decir, ( โ€œ%y) y ejecuta el cรณdigo, la salida mostrarรก solo (18) y no (2018). El siglo del aรฑo no se mostrarรก como se muestra en la siguiente captura de pantalla.

Formatear la salida de fecha y hora con Strftime()

Paso 3) La funciรณn strf permite declarar la fecha, el dรญa, el mes y el aรฑo por separado. Ademรกs, con pequeรฑos cambios en el cรณdigo de control de la funciรณn strftime, se puede formatear el estilo del texto.

Formatear la salida de fecha y hora con Strftime()

Dentro de la funciรณn strftime, si reemplazas (%a) con una A mayรบscula, es decir, (%A), la salida se imprimirรก como "Friday" en lugar de solo una abreviatura "Fri".

Formatear la salida de fecha y hora con Strftime()

Paso 4) Con la ayuda de la funciรณn "Strftime" tambiรฉn podemos recuperar la hora, la fecha o ambas del sistema local.

  1. %C- indica la fecha y hora local
  2. %x- indica la fecha local
  3. %X- indica la hora local

Formatear la salida de fecha y hora con Strftime()

En el resultado, puede ver el resultado esperado.

Paso 5) La โ€œfunciรณn strftimeโ€ le permite llamar la hora en cualquier formato de 24 horas o 12 horas.

Formatear la salida de fecha y hora con Strftime()

Con solo definir un cรณdigo de control como %I/H para horas, % M para minutos, %S para segundos, se puede solicitar la hora para diferentes formatos.

12 horas se declara la hora [print now.strftime(โ€œ%I:%M:%S %p) ]

24 horas se declara la hora [print now.strftime(โ€œ%H:%Mโ€)]

Aquรญ estรก el cรณdigo completo para convertir fecha y hora en un objeto String.

#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print(now.strftime("%c"))
      print(now.strftime("%x"))
      print(now.strftime("%X"))
##### Time Formatting ####
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print(now.strftime("%I:%M:%S %p")) # 12-Hour:Minute:Second:AM
      print(now.strftime("%H:%M")) # 24-Hour:Minute

if __name__== "__main__":
    main()

ยฟQuรฉ es Timedelta en Python?

Delta de tiempo en Python es un objeto que representa la duraciรณn. Se utiliza principalmente para calcular la duraciรณn entre dos fechas y horas. Tambiรฉn se utiliza para recuperar el objeto con una diferencia de fecha y hora. El objeto timedelta admite operaciones matemรกticas como sumas y restas.tracmultiplicaciones, divisiones, etc.

Cรณmo utilizar objetos Timedelta

Con Python objetos timedelta, puedes estimar el tiempo tanto para el futuro como para el pasado. En otras palabras, es un lapso de tiempo para predecir cualquier dรญa, fecha u hora especial.

Recuerde que esta funciรณn no es para imprimir la hora o la fecha, sino algo para CALCULAR sobre el futuro o el pasado.Veamos un Python Ejemplo de timedelta para entenderlo mejor.

Paso 1) Para ejecutar objetos Timedelta, primero debe declarar la declaraciรณn de importaciรณn y luego ejecutar el cรณdigo

  1. Escribir una declaraciรณn de importaciรณn para timedelta
  2. Ahora escribe el cรณdigo para imprimir el objeto desde el tiempo delta como se muestra en la captura de pantalla
  3. Ejecute el cรณdigo. El timedelta representa un lapso de 365 dรญas, 8 horas y 15 minutos e imprime lo mismo.

Objetos Timedelta

ยฟConfuso? El siguiente paso ayudarรก

Paso 2) Obtengamos la fecha y hora de hoy para comprobar si nuestra declaraciรณn de importaciรณn funciona bien. Cuando se ejecuta el cรณdigo, imprime la fecha de hoy, lo que significa que nuestra declaraciรณn de importaciรณn estรก funcionando bien.

Objetos Timedelta

Paso 3) Veremos cรณmo podemos recuperar la fecha dentro de un aรฑo a travรฉs de objetos delta. Cuando ejecutamos el cรณdigo, arroja el resultado esperado.

Objetos Timedelta

Paso 4) Otro ejemplo de cรณmo se puede utilizar el delta temporal para calcular una fecha futura a partir de la fecha y hora actuales

Objetos Timedelta

Paso 5) Veamos un ejemplo mรกs complejo. Me gustarรญa determinar cuรกntos dรญas faltan para el Aรฑo Nuevo. Asรญ es como procederemos

  • Usando hoy = fecha. hoy () obtendremos la fecha de hoy
  • Sabemos que el aรฑo nuevo siempre es el 1 de enero, pero el aรฑo podrรญa ser diferente. Usando nyd= date(today.year,1,1) almacenamos el nuevo aรฑo en la variable nyd
  • Si nyd < hoy: compara si la fecha actual es posterior al aรฑo nuevo. Si es asรญ, entra en el bucle while.
  • ((today-nyd).days) da la diferencia entre una fecha actual y el aรฑo nuevo en DรAS

Objetos Timedelta

El resultado muestra que โ€œel dรญa de Aรฑo Nuevo ya pasรณ hace 11 dรญasโ€.

Aquรญ estรก el cรณdigo de trabajo completo.

#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print (timedelta(days=365, hours=8, minutes=15))
# print today's date
print ("today is: " + str(datetime.now()))
# print today's date one year from now
print ("one year from now it will be:" + str(datetime.now() + timedelta(days=365)))
# create a timedelta that uses more than one argument
# print (in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4)))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print ("New Year day is already went by %d days ago" % ((today - nyd).days))

Python 2 Ejemplo

Los siguientes ejemplos muestran las mismas operaciones de fecha y hora escritas para Python 2, donde print es una instrucciรณn en lugar de una funciรณn. Utilice estas versiones solo cuando mantenga versiones anteriores. Python 2 cรณdigos.

from datetime import date
from datetime import time
from datetime import datetime
def main():
 	##DATETIME OBJECTS
    #Get today's date from datetime class
	today=datetime.now()
	#print today
	# Get the current time
	#t = datetime.time(datetime.now())
	#print "The current time is", t
	#weekday returns 0 (monday) through 6 (sunday)
        wd = date.weekday(today)
	#Days start at 0 for monday
        days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]
        print "Today is day number %d" % wd
        print "which is a " + days[wd]

if __name__== "__main__":
    main()
#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print now.strftime("%c")
      print now.strftime("%x")
      print now.strftime("%X")
##### Time Formatting ####   
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print now.strftime("%I:%M:%S %p") # 12-Hour:Minute:Second:AM
      print now.strftime("%H:%M") # 24-Hour:Minute   

if __name__== "__main__":
    main()
#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print timedelta(days=365, hours=8, minutes=15)
# print today's date
print "today is: " + str(datetime.now())
# print today's date one year from now
print "one year from now it will be:" + str(datetime.now() + timedelta(days=365))
# create a timedelta that uses more than one argument
# print "in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print "New Year day is already went by %d days ago" % ((today - nyd).days)

Preguntas Frecuentes

Utilice datetime.strptime(texto, formato) para convertir una cadena en un objeto datetime. Pase las mismas directivas que usa strftime(), de modo que โ€œ2018-06-29โ€ se lea como โ€œ%Y-%m-%dโ€. A diferencia de strftime(), strptime() convierte texto legible en un objeto datetime con el que se pueden realizar cรกlculos.

Una fecha y hora sin informaciรณn de zona horaria es ingenua; adjuntar una zona horaria la hace consciente. Utilice el mรณdulo zoneinfo integrado (Python 3.9+) o el paquete pytz para localizar fechas y horas, y luego convertir entre zonas para que los cรกlculos sigan siendo correctos en todas las regiones.

Llama al mรฉtodo timestamp() en un objeto datetime para obtener los segundos transcurridos desde la รฉpoca Unix como un nรบmero decimal; por ejemplo, datetime.now().timestamp(). Para hacer lo contrario, datetime.fromtimestamp(value) reconstruye un objeto datetime a partir de una marca de tiempo Unix.

Ambas funciones devuelven la fecha y hora local actual, pero `datetime.now()` acepta un argumento opcional para la zona horaria, mientras que `datetime.today()` no. Para cรณdigo que tenga en cuenta la zona horaria, es preferible usar `datetime.now(tz)` para que el resultado incluya el desfase horario correcto en lugar de usar una funciรณn sin tener en cuenta la zona horaria.

Sรญ. El mรณdulo de fecha y hora viene incluido. Python, por lo que no es necesario instalarlo con pip. Impรณrtelo con โ€œfrom datetime import datetime, date, time, timedeltaโ€ y las clases date, time, datetime, timedelta y tzinfo estarรกn disponibles inmediatamente.

Llama al mรฉtodo isoformat() para obtener una cadena ISO 8601 estรกndar, como โ€œ2018-06-29T08:15:27โ€. Para un objeto de fecha, devuelve โ€œAAAA-MM-DDโ€. A diferencia de strftime(), que crea diseรฑos personalizados a partir de directivas, isoformat() no necesita cรณdigos de control.

Los sistemas de aprendizaje automรกtico transforman las marcas de tiempo sin procesar en caracterรญsticas como el dรญa de la semana, la hora, el mes y el tiempo transcurrido, utilizando datetime y timedelta. Estas caracterรญsticas de fecha procesadas ayudan a los modelos de series temporales y a los sistemas de predicciรณn de IA a detectar patrones estacionales y cรญclicos.

Sรญ. GitHub Copilot y los asistentes de IA de Agentic generan cadenas en formato strftime(), realizan cรกlculos con timedelta y conversiones de zona horaria a partir de un breve comentario, y pueden explicar directivas crรญpticas. Ejecuta siempre el cรณdigo sugerido, ya que es fรกcil cometer errores al manejar fechas y desfases.

Resumir este post con: