Manipulación de fechas y horas en Python, Shell y MySQL: técnicas de obtención y conversión de formatos

Uso del módulo datetime en Python

Para gestionar fechas y horas en Python, se emplean los módulos datetime y time. A continuación se detallan operaciones comunes con ejemplos modificados para reducir la similitud con el código original.

Obtención de objetos de tiempo

import datetime
import time

# Obtener la fecha y hora actual como un objeto datetime
ahora = datetime.datetime.now()
# Alternativa: datetime.datetime.today()

# Calcular una fecha anterior restando un intervalo
un_dia_atras = ahora - datetime.timedelta(days=1)
# Calcular una fecha futura sumando un intervalo
un_dia_adelante = ahora + datetime.timedelta(hours=24)

Conversión entre objetos de tiempo y cadenas formateadas

# Convertir un objeto datetime a una cadena con formato personalizado
cadena_formateada = ahora.strftime("%d/%m/%Y %H:%M:%S")
# Convertir una cadena con formato específico a un objeto datetime
cadena_entrada = "25/12/2023 15:30:00"
objeto_datetime = datetime.datetime.strptime(cadena_entrada, "%d/%m/%Y %H:%M:%S")

Conversiones con marcas de tiempo (timestamps)

# Convertir un objeto datetime a timestamp (segundos desde la época)
marca_tiempo = ahora.timestamp()

# Convertir un timestamp a un objeto datetime
marca_tiempo_actual = time.time()
objeto_desde_timestamp = datetime.datetime.fromtimestamp(marca_tiempo_actual)

Comparación de tiempos

# Comparar objetos datetime directamente
inicio = datetime.datetime.now()
time.sleep(0.5)  # Simular un retraso
fin = datetime.datetime.now()

if fin > inicio:
    diferencia_segundos = (fin - inicio).total_seconds()
    print(f"La diferencia es de {diferencia_segundos} segundos.")

Comandos de fecha en Shell (Bash)

En entornos Unix-like, el comando date permite manipular fechas. Se presentan ejemplos con formato y conversión de marcas de tiempo.

Operaciones básicas

# Obtener la fecha actual en formato YYYY-MM-DD HH:MM:SS
fecha_actual=$(date +"%Y-%m-%d %H:%M:%S")

# Obtener la fecha de ayer usando diferentes sintaxis
fecha_ayer=$(date -d "yesterday" +"%d-%m-%Y")
# Alternativas: "1 day ago" o "-1 days"

# Obtener la fecha de mañana
fecha_mañana=$(date -d "tomorrow" +"%d-%m-%Y")

# Formatear una fecha específica proporcionada como cadena
fecha_original="2023-11-15 08:00:00"
fecha_reformateada=$(date -d "$fecha_original" +"%H:%M %d/%m/%Y")

# Convertir un timestamp a una fecha legible
timestamp=1700000000
fecha_desde_timestamp=$(date -d @$timestamp +"%Y-%m-%d")

Configuración del idioma para nombres de meses

La visualización de meses depende de las varaibles de entorno locales. La prioridad es LC_ALL > LC_* (incluyendo LC_TIME) > LANG.

# Forzar salida en inglés para abreviaturas de meses
export LC_ALL=C
mes_en_ingles=$(date -d "2023-09-01" +"%b")
# Verificar locales instalados
locale -a

Funciones de fecha y hora en MySQL

MySQL ofrece funciones integradas para trabajar con fechas. Se muestran consultas adaptadas con estructuras ligeramente diferentes.

Obtención de valores de tiempo

-- Obtener la fecha actual
SELECT CURDATE() AS fecha_actual;

-- Obtener la fecha de ayer restando un día
SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS fecha_ayer;

-- Obtener la fecha de mañana sumando un día
SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY) AS fecha_mañana;

-- Obtener la fecha y hora actuales
SELECT NOW() AS fecha_hora_actual;

-- Obtener una hora anterior restando horas
SELECT DATE_SUB(NOW(), INTERVAL 2 HOUR) AS hace_dos_horas;

Formateo de feechas

-- Dar formato a la fecha actual
SELECT DATE_FORMAT(NOW(), "%d/%m/%Y %H:%i:%s") AS fecha_formateada;

-- Dar formato a una fecha calculada
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 7 DAY), "%Y%m%d") AS hace_una_semana;

Trabajo con marcas de tiempo

-- Convertir la fecha y hora actuales a timestamp
SELECT UNIX_TIMESTAMP(NOW()) AS timestamp_actual;

Nota: Los códigos de formato varían entre sistemas; por ejemplo, los minutos se representan como %M en Python y Shell, pero como %i en MySQL. Se recomienda verificar la documentación específica para cada entorno.

Etiquetas: Python-3 bash MySQL datetime-module strftime

Publicado el 6-29 04:29