Fechas y Horas (Time, Datetime)

 Python tiene dos módulos principales:

  • time → trabaja con timestamps (segundos desde 1970)

  • datetime → trabaja con fechas y horas de forma más humana y flexible

1. Módulo time

Obtener el timestamp actual

import time

ahora = time.time()
print(ahora)

Salida típica:

1712345678.1234

Pausar la ejecución

time.sleep(2)   # pausa 2 segundos

Formatear fechas con time

print(time.strftime("%d/%m/%Y %H:%M:%S"))

2. Módulo datetime

Este es el módulo más usado en proyectos reales.

Fecha y hora actual

from datetime import datetime

ahora = datetime.now()
print(ahora)

Crear fechas manualmente

fecha = datetime(2024, 5, 10, 14, 30)
print(fecha)

Formatear fechas (strftime)

print(ahora.strftime("%d-%m-%Y"))
print(ahora.strftime("%H:%M:%S"))

Formatos útiles:

CódigoSignificado
%dDía
%mMes
%YAño
%HHora (24h)
%MMinutos
%SSegundos

Convertir texto a fecha (strptime)

texto = "15/03/2025 18:45"
fecha = datetime.strptime(texto, "%d/%m/%Y %H:%M")
print(fecha)

Diferencias entre fechas (timedelta)

from datetime import timedelta

hoy = datetime.now()
mañana = hoy + timedelta(days=1)

print(mañana - hoy)

3. Fechas y horas con zona horaria (timezone)

from datetime import datetime, timezone, timedelta

utc = datetime.now(timezone.utc)
print(utc)

ACTIVIDAD PRÁCTICA: “Sistema de registro de eventos (logger simple)”

Objetivo: que tus alumnos aprendan a registrar eventos con marcas de tiempo, como hacen los sistemas profesionales.

Enunciado

Crea un programa que:

  1. Cada vez que el usuario escriba un comando, lo guarde en un archivo log.txt.

  2. Cada entrada debe incluir:

    • Fecha y hora exacta

    • El comando introducido

  3. Si el usuario escribe "salir", el programa termina.

  4. Al finalizar, muestra cuántos comandos se registraron.

Pistas

  • Usa datetime.now().strftime()

  • Usa with open(..., "a") para añadir líneas

  • Usa un contador

Solución propuesta

from datetime import datetime

contador = 0

with open("log.txt", "a", encoding="utf-8") as f:
    while True:
        comando = input("Introduce un comando ('salir' para terminar): ")

        if comando.lower() == "salir":
            break

        # Obtener fecha y hora
        marca = datetime.now().strftime("%d/%m/%Y %H:%M:%S")

        # Escribir en el log
        f.write(f"[{marca}] {comando}\n")
        contador += 1

print(f"\nComandos registrados: {contador}")

Ejemplo de salida

Introduce un comando ('salir' para terminar): iniciar servidor
Introduce un comando ('salir' para terminar): comprobar estado
Introduce un comando ('salir' para terminar): salir

Comandos registrados: 2