Confronto tra due date

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)