全站通知:
模块:时间
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:时间/doc创建
local p = {}
--格式化日期YYYY-MM-DD(参数1:格式化对象,参数2:分隔符号)
function p.formatDate(frame)
-- 获取传入的日期参数
local inputDate = frame.args[1]
local outputSplit = frame.args[2] or "-" -- 默认分隔符为"-"
if not inputDate then
return "无效日期"
end
-- 使用模式匹配来分解日期为年、月、日
local year, month, day = string.match(inputDate, "(%d+)[%-/](%d+)[%-/](%d+)")
-- 检查是否成功匹配到年月日
if not (year and month and day) then
return string.format("1999%s09%s09", outputSplit, outputSplit)
end
-- 格式化日期,确保月份和日期为两位数
local formattedDate = string.format("%04d%s%02d%s%02d", year, outputSplit, month, outputSplit, day)
return formattedDate
end
--格式化日期时间YYYY-MM-DD HH:MM
function p.formatDateTime(frame)
--统一日期分隔符
local normalizedDateTime = frame.args[1]:gsub("[./-]", "/")
--提取日期和时间的各个部分:
local year, month, day, hour, minute = normalizedDateTime:match("(%d+)%/(%d+)%/(%d+)%s*(%d*):?(%d*)")
-- 年月日检查:
if not (year and month and day) then
return string.format("%04d-%02d-%02d %02d:%02d",1999,9,9,9,9)
end
--时分的默认处理
hour = hour ~= "" and hour or "5"
minute = minute ~= "" and minute or "00"
-- 使用string.format来确保月、日、小时和分钟都是两位数字:
local formattedDateTime = string.format("%04d-%02d-%02d %02d:%02d", tonumber(year), tonumber(month), tonumber(day), tonumber(hour), tonumber(minute))
return formattedDateTime
end
-- 主函数,判断是否超过结束时间
function p.duringDate(frame)
-- 获取传入的结束时间参数,并格式化
local formattedEndDate = p.formatDateTime(frame)
-- 使用os.time函数获取当前时间和结束时间的时间戳
local currentTime = os.time()
local year, month, day, hour, minute = formattedEndDate:match("(%d+)-(%d+)-(%d+) (%d+):(%d+)")
local endTime = os.time({year = tonumber(year), month = tonumber(month), day = tonumber(day), hour = tonumber(hour), min = tonumber(minute)})
-- 比较当前时间和结束时间
return currentTime <= endTime
end
--测试用函数
function p.test()
local mockFrame = {
args = {
[1] = "2024/4/22", -- 位置参数
["date"] = "2024.4.1 5:03", -- 命名参数
}
}
return p.duringDate(mockFrame) -- 使用位置参数
end
return p