编辑“
模块:IUCDate
”
跳到导航
跳到搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
-- 星际统一历日期转换,作者: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.formatDate2(dateTable) return tostring(dateTable[1]).."轮 "..tostring(dateTable[2]).."分轮 "..tostring(dateTable[3]).."年 "..tostring(dateTable[4]).."季 " 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 micAll = 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 micAll = micAll + seasonNum * 10000 + weekNum * 1000 + hourNum * 100 + micNum return micAll * 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.convertNow2(frame) local args = getArgs(frame) local offset = args[1] return module.formatDate2(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
摘要:
请注意,您对希服维基的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
希服维基:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模块:IUCDate/doc
(
编辑
)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
模块
讨论
English
查看
阅读
编辑
查看历史
更多
导航
首页
最近更改
随机页面
沙盒
在线地图
官方网站
希顶相关网站
希顶维基
虫站
希顶语翻译器
工具
链入页面
相关更改
特殊页面
页面信息