Lua:
将来または過去の日付を計算する
どうやって:
Luaでは、os.date
とos.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.date
とos.time
は基本ですが、複雑な日付操作には別のライブラリを使うことが一般的。かつてはLuaDate
やdate.lua
がよく使われました。しかし今では、よりモダンなluatz
やpenlight
などがおすすめです。
Luaの内部で、時刻はエポックタイム(1970年1月1日からの秒数)で計算されるため、タイムゾーンに注意が必要。Luaはタイムゾーン情報を提供しないため、それを考慮する必要がある場合、外部ライブラリを利用するのがベストです。
時間計算で重要なのはうるう年やうるう秒の扱い。これらは、os.date
やos.time
を使う限り、自動的に考慮されます。
関連情報
- Luaの公式マニュアル: https://www.lua.org/manual/
luatz
GitHubページ: https://github.com/daurnimator/luatzpenlight
GitHubページ: https://github.com/stevedonovan/Penlight