从字符串解析日期

Lua:
从字符串解析日期

如何操作:

Lua没有内置支持日期和时间操作,超出了os.dateos.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中处理时间数据的工作。