Lua:
Analisando uma data a partir de uma string
Como Fazer:
Lua não possui suporte integrado para manipulação de datas e horários além da funcionalidade limitada fornecida pelas funções os.date
e os.time
. No entanto, estas podem ser aproveitadas para análises básicas, e para requisitos mais complexos, a biblioteca luadate
, uma biblioteca externa, pode ser utilizada.
Usando os.date
e os.time
:
-- Converter uma data legível por humanos para um carimbo de data/hora e vice-versa
local dateString = "2023-09-21 15:00:00"
local padrão = "(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)"
local ano, mês, dia, hora, minuto, segundo = dateString:match(padrão)
local carimboDeDataHora = os.time({
ano = ano,
mês = mês,
dia = dia,
hora = hora,
min = minuto,
sec = segundo
})
-- Converter carimbo de data/hora de volta para um formato legível por humanos
local dataFormatada = os.date("%Y-%m-%d %H:%M:%S", carimboDeDataHora)
print(dataFormatada) -- Saída: 2023-09-21 15:00:00
Usando luadate
(biblioteca de terceiros):
Para usar luadate
, certifique-se de que está instalada via LuaRocks ou seu gerenciador de pacotes de preferência. luadate
adiciona capacidades extensivas de análise e manipulação de datas e horas.
local date = require('date')
-- Analisar uma string de data diretamente
local dataAnalisada = date.parse("2023-09-21 15:00:00")
print(dataAnalisada:fmt("%Y-%m-%d %H:%M:%S")) -- Saída: 2023-09-21 15:00:00
-- Adicionando durações
umaSemanaDepois = dataAnalisada:adddays(7)
print(umaSemanaDepois:fmt("%Y-%m-%d %H:%M:%S")) -- Saída: 2023-09-28 15:00:00
A biblioteca luadate
oferece uma maneira mais intuitiva e poderosa de trabalhar com datas, incluindo análise a partir de strings, formatação e operações aritméticas em datas, o que simplifica consideravelmente o trabalho com dados temporais em Lua.