Lua:
日付を比較する
How to: (やり方:)
-- 日付の文字列をos.timeで扱える形式に変換する関数
local function parseDate(dateString)
local pattern = "(%d+)-(%d+)-(%d+)"
local year, month, day = dateString:match(pattern)
return os.time({year=year, month=month, day=day})
end
-- 日付を比較する例
local date1 = "2023-03-15"
local date2 = "2023-03-20"
-- 比較の実施
local time1 = parseDate(date1)
local time2 = parseDate(date2)
if time1 > time2 then
print(date1 .. " is after " .. date2)
elseif time1 < time2 then
print(date1 .. " is before " .. date2)
else
print(date1 .. " is the same day as " .. date2)
end
出力例:
2023-03-15 is before 2023-03-20
Deep Dive (深掘り)
日付比較は、カレンダーやスケジューリングソフトウェアにとって根本的な機能です。Luaではos.time
関数を使って日付をUNIXタイムスタンプ(1970年1月1日からの秒数)に変換し比較するのが一般的です。os.date
関数も日付データを扱いますが、比較のためにはUNIXタイムスタンプが便利です。他の言語では専用の日付比較機能がありますが、Luaの標準ライブラリは比較的小さく、os
ライブラリの関数を使用してこのような比較を行います。
See Also (関連項目)
- Lua 5.4 Reference Manual:
os.time
,os.date
- https://www.lua.org/manual/5.4/manual.html#6.9 - Lua Users Wiki: Date and Time - http://lua-users.org/wiki/DateTime