本WIKI由小五十50、哈乌戴德·迪乌斯申请于2020年01月19日迁移,编辑权限开放,如遇Chrome浏览器登陆后无法编辑点这里 迁移BWIKI平台反馈留言板
欢迎来到高达WIKI!本WIKI内容已迁入,开放除首页外的编辑权限,欢迎各位机师编辑补充~
全站通知:
模块:DateNormalize
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:DateNormalize/doc创建
local p = {}
function p.normalize(frame)
local dateStr = mw.text.trim(frame.args[1] or "")
-- 空值或未知情况直接返回空
if dateStr == ""
or dateStr == "不明"
or dateStr == "未知"
or dateStr == "不详"
or dateStr == "—"
or dateStr == "-"
or dateStr == "N/A" then
return "-"
end
-- 清理
dateStr = dateStr:gsub("年", "-")
:gsub("月", "-")
:gsub("日", "")
:gsub("[%s ]", "") -- 去掉空格
:gsub("[/–—]", "-") -- 统一分隔符
:gsub("%-+$", "") -- 关键:去掉末尾多余的 -
:gsub("^%-+", "") -- 去掉开头的 -
-- 匹配各种模式
local y, m, d
-- yyyy-mm-dd 或 yyyy-m-d
y, m, d = dateStr:match("^(%d%d%d%d)%-(%d%d?)%-(%d%d?)$")
if not y then
-- yyyy-mm
y, m = dateStr:match("^(%d%d%d%d)%-(%d%d?)$")
end
if not y then
-- yyyy
y = dateStr:match("^(%d%d%d%d)$")
end
if not y then
-- mm-dd-yyyy 或 m-d-yyyy(美式)
m, d, y = dateStr:match("^(%d%d?)%-(%d%d?)%-(%d%d%d%d)$")
end
-- 如果还没匹配到,尝试其他顺序
if not y then
y, m, d = dateStr:match("^(%d%d%d%d)%-(%d%d?)$") -- 再次检查
end
if y then
y = string.format("%04d", tonumber(y))
if m then
m = string.format("%02d", tonumber(m))
if d then
d = string.format("%02d", tonumber(d))
return y .. "-" .. m .. "-" .. d
else
return y .. "-" .. m
end
else
return y
end
end
-- 兜底:返回原始输入
return dateStr
end
return p

沪公网安备 31011002002714 号