首页
随机
登录
设置
关于NeuroWiki
免责声明
NeuroWiki
搜索
查看“Module:Birthday”的源代码
←
Module:Birthday
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
local p = {} -- 中文数字转换为阿拉伯数字 local function chineseToNumber(chinese) local numbers = { ["零"] = 0, ["一"] = 1, ["二"] = 2, ["三"] = 3, ["四"] = 4, ["五"] = 5, ["六"] = 6, ["七"] = 7, ["八"] = 8, ["九"] = 9, ["十"] = 10, ["十一"] = 11, ["十二"] = 12 } return numbers[chinese] or nil end -- 英文月份转换为阿拉伯数字 local function englishToNumber(month) local months = { January = 1, February = 2, March = 3, April = 4, May = 5, June = 6, July = 7, August = 8, September = 9, October = 10, November = 11, December = 12, Jan = 1, Feb = 2, Mar = 3, Apr = 4, Jun = 6, Jul = 7, Aug = 8, Sep = 9, Oct = 10, Nov = 11, Dec = 12 } return months[month] or nil end function p.calculateAge(frame) local birthYear = tonumber(frame.args[1]) local birthMonthInput = frame.args[2] local birthDay = tonumber(frame.args[3]) -- 检查缺失的输入 if not birthYear and not birthMonthInput and not birthDay then return "错误:输入的年份、月份和日期都是空的。" end -- 转换月份 local birthMonth if tonumber(birthMonthInput) then birthMonth = tonumber(birthMonthInput) -- 如果是阿拉伯数字 else birthMonth = chineseToNumber(birthMonthInput) or englishToNumber(birthMonthInput) end -- 生成日期字符串 local dateString = "" if birthYear and birthMonth and birthDay then if type(birthMonthInput) == "string" and (birthMonthInput:match("^[A-Za-z]+$")) then -- 英文月份格式 dateString = string.format("%s %d, %d", birthMonthInput, birthDay, birthYear) else -- 中文或阿拉伯数字格式 dateString = string.format("%d年%d月%d日", birthYear, birthMonth, birthDay) end -- 计算年龄 local currentYear = tonumber(os.date("%Y")) local currentMonth = tonumber(os.date("%m")) local currentDay = tonumber(os.date("%d")) local age = currentYear - birthYear if currentMonth < birthMonth or (currentMonth == birthMonth and currentDay < birthDay) then age = age - 1 end return string.format("%s (%d岁)", dateString, age) else -- 如果月份是英文,且缺失年份或日期 if type(birthMonthInput) == "string" and (birthMonthInput:match("^[A-Za-z]+$")) then if birthYear and not birthDay then return string.format("%s, %d", birthMonthInput, birthYear) -- 仅年份 elseif birthDay then return string.format("%s %d", birthMonthInput, birthDay) -- 仅日期 else return string.format("%s", birthMonthInput) -- 仅月份 end end -- 如果缺少年份、月份或日期中的任意一个,则只输出日期 if birthYear and birthMonth then return string.format("%d年%d月", birthYear, birthMonth) -- 年月 elseif birthYear and birthDay then return string.format("%d年%d日", birthYear, birthDay) -- 年日 elseif birthMonth and birthDay then return string.format("%d月%d日", birthMonth, birthDay) -- 月日 elseif birthYear then return string.format("%d年", birthYear) -- 仅年份 elseif birthMonth then return string.format("%d月", birthMonth) -- 仅月份 elseif birthDay then return string.format("%d日", birthDay) -- 仅日期 else return "错误:输入的年份、月份和日期都是空的。" end end end return p
该页面使用的模板:
Module:Birthday/doc
(
查看源代码
)
返回
Module:Birthday
。