Lua:
Analizando una fecha a partir de una cadena de texto
Cómo hacerlo:
Lua no tiene soporte integrado para la manipulación de fecha y hora más allá de la funcionalidad limitada proporcionada por las funciones os.date
y os.time
. Sin embargo, estas pueden aprovecharse para el análisis básico, y para requisitos más complejos, se puede utilizar la biblioteca luadate
, una biblioteca externa.
Usando os.date
y os.time
:
-- Convertir una fecha legible por humanos a un sello de tiempo y viceversa
local dateString = "2023-09-21 15:00:00"
local patron = "(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)"
local año, mes, día, hora, minuto, segundo = dateString:match(patron)
local selloDeTiempo = os.time({
year = año,
month = mes,
day = día,
hour = hora,
min = minuto,
sec = segundo
})
-- Convertir el sello de tiempo de vuelta a un formato legible por humanos
local fechaFormateada = os.date("%Y-%m-%d %H:%M:%S", selloDeTiempo)
print(fechaFormateada) -- Salida: 2023-09-21 15:00:00
Usando luadate
(biblioteca de terceros):
Para usar luadate
, asegúrate de que esté instalada a través de LuaRocks o tu gestor de paquetes de preferencia. luadate
añade capacidades extensivas de análisis y manipulación de fecha y hora.
local date = require('date')
-- Analizar directamente una cadena de fecha
local fechaAnalizada = date.parse("2023-09-21 15:00:00")
print(fechaAnalizada:fmt("%Y-%m-%d %H:%M:%S")) -- Salida: 2023-09-21 15:00:00
-- Añadiendo duraciones
unaSemanaDespués = fechaAnalizada:adddays(7)
print(unaSemanaDespués:fmt("%Y-%m-%d %H:%M:%S")) -- Salida: 2023-09-28 15:00:00
La biblioteca luadate
ofrece una manera más intuitiva y poderosa de trabajar con fechas, incluyendo el análisis desde cadenas, formateo, y operaciones aritméticas en fechas, lo que simplifica considerablemente trabajar con datos temporales en Lua.