查看“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
。
导航菜单
个人工具
中文
创建账号
登录
命名空间
模块
讨论
English
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
最新文件
随机页面
官方Discord
浏览NeuroWiki
人物列表
直播记录
梗列表
事件列表
物品列表
场景列表
辟谣专区
帮助
帮助
沙盒
NeuroWiki政策文件
编辑规范
怎么正确编辑&更新?
工具
链入页面
相关更改
上传文件
特殊页面
页面信息