Lua:
Porównywanie dwóch dat

How to:

local os_time = os.time

-- Tworzenie dwóch dat
local date1 = os_time{year=2023, month=3, day=15}
local date2 = os_time{year=2023, month=4, day=15}

-- Porównywanie dat
if date1 < date2 then
    print('Date1 jest wcześniejsza niż Date2.')
elseif date1 > date2 then
    print('Date1 jest późniejsza niż Date2.')
else
    print('Date1 i Date2 są dokładnie takie same.')
end

-- Formatowanie i porównywanie dat jako stringi
local date1_str = os.date('%Y-%m-%d', date1)
local date2_str = os.date('%Y-%m-%d', date2)
print('Date1:', date1_str)
print('Date2:', date2_str)

Przykładowy output:

Date1 jest wcześniejsza niż Date2.
Date1: 2023-03-15
Date2: 2023-04-15

Deep Dive

Historia Lua sięga początku lat 90. i od tego czasu sposób porównywania dat ewoluował. Możemy porównywać czasy UNIX używając os.time(), która zwraca sekundy od tzw. “Unix epoch”. Alternatywnie, by porównać daty z czasami, należy użyć funkcji os.date().

Porównywanie dat w Lua jest dość prostolinijne. Daty zwykle przechowuje się jako liczby całkowite (np. sekundy od Unix epoch, czyli 1 stycznia 1970) lub jako tablice ze znacznikami czasowymi. O ile liczby można porównywać bezpośrednio, format string wymaga użycia funkcji do konwersji lub porównania.

Implementacja wykorzystująca os.time() jest wydajna i uniwersalna, bo opiera się na wbudowanych funkcjach Lua do obsługi czasu. Natileż, kiedy porównujemy daty jako stringi, musimy mieć na uwadze format – różne ustawienia regionalne i preferencje mogą wymagać innych schematów formatowania.

See Also

Pamiętaj, że informacje w sekcji “See Also” mogą zmieniać się z upływem czasu, dlatego warto sprawdzać aktualność źródeł.