Lua:
Twee datums vergelijken

Hoe te:

Lua heeft geen ingebouwde functies voor datumvergelijking, maar we kunnen de functie os.time() gebruiken om datums om te zetten naar een numeriek formaat (epochtijd) en ze dan vergelijken. Eitje.

-- Datums omzetten naar epochtijd
local date1 = os.time({year=2023, month=4, day=1})
local date2 = os.time({year=2023, month=4, day=15})

-- De datums vergelijken
if date1 > date2 then
  print("Date1 is later dan Date2.")
elseif date1 < date2 then
  print("Date1 is eerder dan Date2.")
else
  print("Date1 is hetzelfde als Date2.")
end

Voorbeelduitvoer bij het uitvoeren met deze datums:

Date1 is eerder dan Date2.

Diepere duik

Vroeger had Lua geen datumtype. Programmeurs vertrouwden op de os.time() functie voor datum-tijd operaties, die nog steeds wordt gebruikt. os.time() retourneert de tijd in seconden sinds het epoch (ook bekend als Unix-tijd, die begon op 1 januari 1970). Dit is handig omdat het datums omzet naar getallen, wat vergelijkingen vereenvoudigt.

Wat betreft alternatieven, je zou een aangepaste comparator voor datumtabellen kunnen schrijven, elk veld (jaar, maand, dag) handmatig kunnen vergelijken, of een externe datumlibrary zoals LuaDate kunnen gebruiken.

Wees bewust van tijdzones en de veranderingen van zomertijd wanneer je os.time() gebruikt. De functie gaat ervan uit dat je lokale tijd geeft, tenzij je anders aangeeft.

Zie ook