Lua:
Confronto tra due date
How to: (Come fare:)
-- Presupponiamo di avere due date come stringhe, in formato ISO 8601
local data1 = '2023-03-15'
local data2 = '2023-03-20'
-- Convertiamo le stringhe in timestamp (secondi da Epoch)
local pattern = '(%d+)-(%d+)-(%d+)'
local anno1, mese1, giorno1 = data1:match(pattern)
local anno2, mese2, giorno2 = data2:match(pattern)
local os_time1 = os.time({year = anno1, month = mese1, day = giorno1})
local os_time2 = os.time({year = anno2, month = mese2, day = giorno2})
-- Confrontiamo i timestamp
if os_time1 > os_time2 then
print(data1 .. ' è dopo ' .. data2)
elseif os_time1 < os_time2 then
print(data1 .. ' è prima di ' .. data2)
else
print(data1 .. ' e ' .. data2 .. ' sono uguali')
end
Risultato del sample:
2023-03-15 è prima di 2023-03-20
Deep Dive (Approfondimento)
Prima di Lua 5.3, convertire le date in timestamp non era così diretto. Si doveva affidare a funzioni esterne o moduli. Da Lua 5.3 in poi, os.time
e altre funzioni del modulo os
semplificano la manipolazione di date e orari.
Ci sono modi alternativi di confrontare date. Ad esempio, librerie come luadate
offrono funzionalità più ampie per la gestione delle date, incluse le timezone. Utilizzare una libreria esterna può essere utile se le tue esigenze sono più sofisticate del semplice confronto di due date.
Quando convalidi la differenza tra le date, fa attenzione allo scopo. Ad esempio, la differenza in giorni effettivi può variare a seconda dell’considerazione del fuso orario.
See Also (Vedi Anche)
- La documentazione ufficiale di Lua su
os.time
: http://www.lua.org/manual/5.4/manual.html#pdf-os.time - LuaDate, una libreria per le date: https://github.com/Tieske/date
- ‘Programming in Lua’ per una guida approfondita su Lua: https://www.lua.org/pil/