日付を比較する

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 (関連項目)