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
- Dokumentacja Lua
os
library: https://www.lua.org/manual/5.4/manual.html#6.9 - Wprowadzenie do Unix Time: https://en.wikipedia.org/wiki/Unix_time
- Porównywanie stringów z datami w Lua: https://stackoverflow.com/questions/35543114/how-to-compare-date-strings-in-lua
Pamiętaj, że informacje w sekcji “See Also” mogą zmieniać się z upływem czasu, dlatego warto sprawdzać aktualność źródeł.