文字列から日付をパースする

Lua:
文字列から日付をパースする

方法:

Luaは、os.date関数とos.time関数によって提供される限定的な機能を除いて、日付と時刻の操作をサポートしていません。しかし、これらは基本的な解析に利用することができ、より複雑な要件に対しては、外部ライブラリであるluadateライブラリを利用できます。

os.dateos.timeを使う:

-- 人間が読める日付をタイムスタンプに変換し、それを元に戻す
local dateString = "2023-09-21 15:00:00"
local pattern = "(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)"
local year, month, day, hour, minute, second = dateString:match(pattern)

local timestamp = os.time({
  year = year,
  month = month,
  day = day,
  hour = hour,
  min = minute,
  sec = second
})

-- タイムスタンプを人間が読める形式に変換する
local formattedDate = os.date("%Y-%m-%d %H:%M:%S", timestamp)
print(formattedDate)  -- 出力: 2023-09-21 15:00:00

luadate(サードパーティライブラリ)を使用する: luadateを使用するには、LuaRocksやお好みのパッケージマネージャー経由でインストールされていることを確認してください。luadateは、日付と時刻の解析と操作の機能を広範囲に提供します。

local date = require('date')

-- 日付文字列を直接解析する
local parsedDate = date.parse("2023-09-21 15:00:00")
print(parsedDate:fmt("%Y-%m-%d %H:%M:%S"))  -- 出力: 2023-09-21 15:00:00

-- 期間を追加する
local oneWeekLater = parsedDate:adddays(7)
print(oneWeekLater:fmt("%Y-%m-%d %H:%M:%S"))  -- 出力: 2023-09-28 15:00:00

luadateライブラリは、文字列からの解析、フォーマット、日付の算術操作を含む、日付に関するより直感的で強力な方法を提供します。これにより、Luaでの時間データの取り扱いがかなり簡素化されます。