查看“Module:IUCDate”的源代码
←
Module:IUCDate
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
-- 星际统一历日期转换,作者:QWERTY_52_38 local module = {} local getArgs = require('Module:Arguments').getArgs origin = os.time({year=2022,month=4,day=1,hour=22,min=13}) mic = 9.402 --1微=9.402s function module.test() local now = os.time() mw.log(now) return now end function module.isSpecialYear(year) -- 判断是否要减去1微 if (year % 4 == 0) then return true elseif ((year - 1) % 200 == 0) then return true else return false end end function module.formatDate(dateTable) local a = tostring(dateTable[1]).."轮 "..tostring(dateTable[2]).."分轮 "..tostring(dateTable[3]).."年 "..tostring(dateTable[4]).."季 "..tostring(dateTable[5]).."周 "..tostring(dateTable[6]).."时 "..tostring(dateTable[7]).."微" return a end function module.sec2date(sec) -- 将差值(单位为秒)转换为星际统一历时间 local micNum = math.floor(sec / mic + 0.00000000001) local yearNum = 0 if micNum < 0 then repeat if module.isSpecialYear(yearNum-1) then j = 0 else j = 1 end micNum = micNum + 99995 + j yearNum = yearNum - 1 until (micNum >= 0) end if micNum >= 99995 and yearNum >= 0 then repeat if (module.isSpecialYear(yearNum)) then j = 0 else j = 1 end micNum = micNum - 99995 - j yearNum = yearNum + 1 until (micNum < 99995 + j) end local cycleNum = math.floor(yearNum / 144 + 0.00000000001) yearNum = yearNum - cycleNum * 144 local divisionNum = math.floor(yearNum / 12 + 0.00000000001) yearNum = yearNum - divisionNum * 12 local seasonNum = math.floor(micNum / 10000 + 0.00000000001) micNum = micNum - seasonNum * 10000 local weekNum = math.floor(micNum / 1000 + 0.00000000001) micNum = micNum - weekNum * 1000 local hourNum = math.floor(micNum / 100 + 0.00000000001) micNum = micNum - hourNum * 100 return {cycleNum, divisionNum, yearNum, seasonNum, weekNum, hourNum, micNum} end function module.date2sec(cycleNum, divisionNum, yearNum, seasonNum, weekNum, hourNum, micNum) -- 将星际统一历时间转换为差值(单位为秒) local micNum = 0 local yearNum = cycleNum * 144 + divisionNum * 12 + yearNum if yearNum < 0 then repeat if module.isSpecialYear(yearNum-1) then j = 0 else j = 1 end micNum = micNum - 99995 - j yearNum = yearNum + 1 until (yearNum >= 0) end if yearNum > 0 then repeat if (module.isSpecialYear(yearNum)) then j = 0 else j = 1 end micNum = micNum + 99995 + j yearNum = yearNum - 1 until (yearNum <= 0) end micNum = micNum + seasonNum * 10000 + weekNum * 1000 + hourNum * 100 + micNum return micNum * mic + origin end -- 不用于调用 function module.convertToIUC_base(time) return module.sec2date(time - origin) end function module.convertNow_base(offset) return module.sec2date(os.time() + offset * mic - origin) end function module.convertToCE_base(cycleNum, divisionNum, yearNum, seasonNum, weekNum, hourNum, micNum) return os.date("%Y年 %m月 %d日 %H时 %M分 %S秒", module.date2sec(cycleNum, divisionNum, yearNum, seasonNum, weekNum, hourNum, micNum)) end -- 用于#invoke调用 function module.convertToIUC(frame) local args = getArgs(frame) return module.formatDate(module.convertToIUC_base(os.time({year=args[1],month=args[2],day=args[3],hour=args[4],minute=args[5],second=args[6]}))) end function module.convertNow(frame) local args = getArgs(frame) local offset = args[1] return module.formatDate(module.convertNow_base(offset)) end function module.convertToCE(frame) local args = getArgs(frame) return module.convertToCE_base(args[1],args[2],args[3],args[4],args[5],args[6],args[7]) end return module
本页使用的模板:
Module:IUCDate/doc
(
查看源代码
)
返回
Module:IUCDate
。
导航菜单
个人工具
创建账号
登录
命名空间
模块
讨论
English
查看
阅读
查看源代码
查看历史
更多
导航
首页
最近更改
随机页面
社群首页
帮助
希顶相关网站
希顶社区官网
(原作)希顶翻译器
〇改希顶转写器
希顶模组服务器
工具
链入页面
相关更改
特殊页面
页面信息