将来または過去の日付を計算する

Lua:
将来または過去の日付を計算する

どうやって:

Luaでは、os.dateos.time関数を使って日付の計算ができます。例えば、今日から一週間後の日付を求めるには:

today = os.time()
one_week = 7 * 24 * 60 * 60  -- 一週間の秒数
future = os.date("*t", today + one_week)

print("現在の日付:", os.date("%Y-%m-%d"))
print("未来の日付:", os.date("%Y-%m-%d", os.time(future)))

出力例:

現在の日付: 2023-04-01
未来の日付: 2023-04-08

過去の日付を計算するには:

past = os.date("*t", today - one_week)
print("過去の日付:", os.date("%Y-%m-%d", os.time(past)))

出力例:

過去の日付: 2023-03-25

深掘り

Luaで日付計算に対する組み込みのサポートは限られています。os.dateos.timeは基本ですが、複雑な日付操作には別のライブラリを使うことが一般的。かつてはLuaDatedate.luaがよく使われました。しかし今では、よりモダンなluatzpenlightなどがおすすめです。

Luaの内部で、時刻はエポックタイム(1970年1月1日からの秒数)で計算されるため、タイムゾーンに注意が必要。Luaはタイムゾーン情報を提供しないため、それを考慮する必要がある場合、外部ライブラリを利用するのがベストです。

時間計算で重要なのはうるう年やうるう秒の扱い。これらは、os.dateos.timeを使う限り、自動的に考慮されます。

関連情報