Aritmética temporal
Sume y compare horas
Aritmética temporal es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.
El tiempo son solo números
Como os.time devuelve segundos simples, hacer cálculos con fechas consiste principalmente en realizar operaciones aritméticas normales. Sume segundos para avanzar y réstelos para retroceder.
En esta lección aprenderá a desplazar horas, compararlas y encontrar la diferencia entre dos instantes.
Segundos en un minuto, una hora y un día
Para trabajar con unidades mayores, recuerde las cantidades básicas: 60 segundos en un minuto, 3600 en una hora y 86400 en un día.
Multiplicar por estas constantes le permite expresar cualquier duración en segundos.
print("Minute:", 60)
print("Hour:", 60 * 60)
print("Day:", 24 * 60 * 60)Una hora después
Para obtener la hora dentro de una hora, tome os.time() y añada 3600 segundos.
Pase el nuevo número a os.date para ver el resultado como texto legible.
local now = os.time()
local later = now + 3600
print(os.date("%H:%M", now))
print(os.date("%H:%M", later))Ayer y mañana
Añada 86400 segundos para avanzar un día o réstelos para retroceder un día.
Esta es una forma rápida de calcular la fecha de mañana o de ayer sin preocuparse por los límites entre meses.
local now = os.time()
print("Yesterday:", os.date("%Y-%m-%d", now - 86400))
print("Tomorrow: ", os.date("%Y-%m-%d", now + 86400))Crear una fecha concreta
Comience los cálculos desde una fecha fija construyéndola con una tabla. Aquí creamos el día de Año Nuevo de 2025 y después añadimos una semana.
El tiempo añadido avanza correctamente hasta el 8 de enero.
local start = os.time({year=2025, month=1, day=1})
local week = start + 7 * 86400
print(os.date("%Y-%m-%d", week))Comparar dos instantes
Como los tiempos son números, funcionan los operadores de comparación normales. Un número mayor representa un instante posterior.
Esto facilita comprobar si ha pasado una fecha límite.
local deadline = os.time({year=2020, month=1, day=1})
local now = os.time()
if now > deadline then
print("Deadline has passed")
endDiferencia en segundos
Restar un instante de otro proporciona la diferencia en segundos. Lua también ofrece os.difftime(a, b), que devuelve a - b como número.
Usar os.difftime es la forma portable y recomendada de calcular un intervalo.
local a = os.time({year=2025, month=1, day=2})
local b = os.time({year=2025, month=1, day=1})
print(os.difftime(a, b))Convertir segundos en días
Una diferencia expresada en segundos puede ser grande, así que divídala para obtener unidades más manejables. Divida entre 86400 para obtener días o entre 3600 para obtener horas.
Utilice math.floor para eliminar la parte fraccionaria cuando solo necesite unidades completas.
local diff = os.difftime(
os.time({year=2025, month=1, day=11}),
os.time({year=2025, month=1, day=1}))
print(diff / 86400, "days")Días hasta un evento
Combine estas ideas para hacer una cuenta regresiva hasta una fecha futura. Reste la hora actual de la fecha objetivo y convierta después los segundos en días completos.
Este patrón se utiliza en temporizadores de cuenta regresiva y aplicaciones de recordatorios.
local target = os.time({year=2030, month=1, day=1})
local secs = os.difftime(target, os.time())
local days = math.floor(secs / 86400)
print("Days left:", days)Normalizar con os.time
Un truco ingenioso: proporcione a os.time una tabla con un campo fuera de rango y lo corregirá. El día 32 de enero se convierte en el 1 de febrero.
Esto permite añadir días simplemente aumentando el campo day, mientras Lua se encarga del calendario.
local t = os.time({year=2025, month=1, day=32})
print(os.date("%Y-%m-%d", t))Añadir un mes de forma segura
Gracias a la normalización, puede aumentar el campo month por encima de 12 y Lua avanzará el año automáticamente.
El mes 13 de 2025 se convierte automáticamente en enero de 2026.
local t = os.time({year=2025, month=13, day=1})
print(os.date("%Y-%m-%d", t))Comprobación rápida
Aplique sus conocimientos sobre cálculos de tiempo.
Recapitulación
Los valores de tiempo son números, así que puede sumar o restar segundos para desplazarlos: 3600 por hora y 86400 por día. Compare los tiempos directamente con > y <.
Utilice os.difftime para obtener la diferencia entre dos tiempos y divídala después para obtener horas o días. Recuerde también que os.time normaliza los campos de tabla que están fuera de rango, lo que simplifica los cálculos de calendario.
Preguntas frecuentes
¿La lección «Aritmética temporal» es gratis?
Sí — el texto completo de «Aritmética temporal» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Aritmética temporal»?
Sume y compare horas Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Lua Academy?
No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Aritmética temporal»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Lua Academy?
Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- os.time y os.date
- Formatear fechas
- Aritmética temporal
- Medir duraciones