<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://120.55.36.65/w/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3AIUCDate</id>
	<title>模块:IUCDate - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://120.55.36.65/w/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3AIUCDate"/>
	<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:IUCDate&amp;action=history"/>
	<updated>2026-04-06T20:55:06Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:IUCDate&amp;diff=98&amp;oldid=prev</id>
		<title>UrnEn：​创建页面，内容为“-- 星际统一历日期转换，作者：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 fal…”</title>
		<link rel="alternate" type="text/html" href="http://120.55.36.65/w/index.php?title=%E6%A8%A1%E5%9D%97:IUCDate&amp;diff=98&amp;oldid=prev"/>
		<updated>2024-08-07T05:49:48Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“-- 星际统一历日期转换，作者：QWERTY_52_38  local module = {} local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).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 fal…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- 星际统一历日期转换，作者：QWERTY_52_38&lt;br /&gt;
&lt;br /&gt;
local module = {}&lt;br /&gt;
local getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
&lt;br /&gt;
origin = os.time({year=2022,month=4,day=1,hour=22,min=13})&lt;br /&gt;
mic = 9.402 --1微=9.402s&lt;br /&gt;
&lt;br /&gt;
function module.test()&lt;br /&gt;
	local now = os.time()&lt;br /&gt;
	mw.log(now)&lt;br /&gt;
	return now&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.isSpecialYear(year) &lt;br /&gt;
	-- 判断是否要减去1微&lt;br /&gt;
	if (year % 4 == 0) then &lt;br /&gt;
		return true&lt;br /&gt;
	elseif ((year - 1) % 200 == 0) then&lt;br /&gt;
		return true&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.formatDate(dateTable)&lt;br /&gt;
	local a = tostring(dateTable[1])..&amp;quot;轮 &amp;quot;..tostring(dateTable[2])..&amp;quot;分轮 &amp;quot;..tostring(dateTable[3])..&amp;quot;年 &amp;quot;..tostring(dateTable[4])..&amp;quot;季 &amp;quot;..tostring(dateTable[5])..&amp;quot;周 &amp;quot;..tostring(dateTable[6])..&amp;quot;时 &amp;quot;..tostring(dateTable[7])..&amp;quot;微&amp;quot;&lt;br /&gt;
	return a&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.formatDate2(dateTable)&lt;br /&gt;
	return tostring(dateTable[1])..&amp;quot;轮 &amp;quot;..tostring(dateTable[2])..&amp;quot;分轮 &amp;quot;..tostring(dateTable[3])..&amp;quot;年 &amp;quot;..tostring(dateTable[4])..&amp;quot;季 &amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.sec2date(sec)&lt;br /&gt;
	-- 将差值（单位为秒）转换为星际统一历时间&lt;br /&gt;
	local micNum = math.floor(sec / mic + 0.00000000001)&lt;br /&gt;
	local yearNum = 0&lt;br /&gt;
	if micNum &amp;lt; 0 then&lt;br /&gt;
		repeat&lt;br /&gt;
			if module.isSpecialYear(yearNum-1) then&lt;br /&gt;
				j = 0&lt;br /&gt;
			else&lt;br /&gt;
				j = 1&lt;br /&gt;
			end&lt;br /&gt;
			micNum = micNum + 99995 + j&lt;br /&gt;
			yearNum = yearNum - 1&lt;br /&gt;
		until (micNum &amp;gt;= 0)&lt;br /&gt;
	end&lt;br /&gt;
	if micNum &amp;gt;= 99995 and yearNum &amp;gt;= 0 then&lt;br /&gt;
		repeat&lt;br /&gt;
			if (module.isSpecialYear(yearNum)) then&lt;br /&gt;
				j = 0&lt;br /&gt;
			else&lt;br /&gt;
				j = 1&lt;br /&gt;
			end&lt;br /&gt;
			micNum = micNum - 99995 - j&lt;br /&gt;
			yearNum = yearNum + 1&lt;br /&gt;
		until (micNum &amp;lt; 99995 + j)&lt;br /&gt;
	end&lt;br /&gt;
	local cycleNum = math.floor(yearNum / 144 + 0.00000000001)&lt;br /&gt;
	yearNum = yearNum - cycleNum * 144&lt;br /&gt;
	local divisionNum = math.floor(yearNum / 12 + 0.00000000001)&lt;br /&gt;
	yearNum = yearNum - divisionNum * 12&lt;br /&gt;
	local seasonNum = math.floor(micNum / 10000 + 0.00000000001)&lt;br /&gt;
	micNum = micNum - seasonNum * 10000&lt;br /&gt;
	local weekNum = math.floor(micNum / 1000 + 0.00000000001)&lt;br /&gt;
	micNum = micNum - weekNum * 1000&lt;br /&gt;
	local hourNum = math.floor(micNum / 100 + 0.00000000001)&lt;br /&gt;
	micNum = micNum - hourNum * 100&lt;br /&gt;
	return {cycleNum, divisionNum, yearNum, seasonNum, weekNum, hourNum, micNum}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.date2sec(cycleNum, divisionNum, yearNum, seasonNum, weekNum, hourNum, micNum)&lt;br /&gt;
	-- 将星际统一历时间转换为差值（单位为秒）&lt;br /&gt;
	local micAll = 0&lt;br /&gt;
	local yearNum = cycleNum * 144 + divisionNum * 12 + yearNum&lt;br /&gt;
	if yearNum &amp;lt; 0 then&lt;br /&gt;
		repeat&lt;br /&gt;
			if module.isSpecialYear(yearNum-1) then&lt;br /&gt;
				j = 0&lt;br /&gt;
			else&lt;br /&gt;
				j = 1&lt;br /&gt;
			end&lt;br /&gt;
			micNum = micNum - 99995 - j&lt;br /&gt;
			yearNum = yearNum + 1&lt;br /&gt;
		until (yearNum &amp;gt;= 0)&lt;br /&gt;
	end&lt;br /&gt;
	if yearNum &amp;gt; 0 then&lt;br /&gt;
		repeat&lt;br /&gt;
			if (module.isSpecialYear(yearNum)) then&lt;br /&gt;
				j = 0&lt;br /&gt;
			else&lt;br /&gt;
				j = 1&lt;br /&gt;
			end&lt;br /&gt;
			micNum = micNum + 99995 + j&lt;br /&gt;
			yearNum = yearNum - 1&lt;br /&gt;
		until (yearNum &amp;lt;= 0)&lt;br /&gt;
	end&lt;br /&gt;
	micAll = micAll + seasonNum * 10000 + weekNum * 1000 + hourNum * 100 + micNum&lt;br /&gt;
	return micAll * mic + origin&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 不用于调用&lt;br /&gt;
function module.convertToIUC_base(time)&lt;br /&gt;
	return module.sec2date(time - origin)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.convertNow_base(offset)&lt;br /&gt;
	return module.sec2date(os.time() + offset * mic - origin)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.convertToCE_base(cycleNum, divisionNum, yearNum, seasonNum, weekNum, hourNum, micNum)&lt;br /&gt;
	return os.date(&amp;quot;%Y年 %m月 %d日 %H时 %M分 %S秒&amp;quot;, module.date2sec(cycleNum, divisionNum, yearNum, seasonNum, weekNum, hourNum, micNum))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 用于#invoke调用&lt;br /&gt;
function module.convertToIUC(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	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]})))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.convertNow(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local offset = args[1]&lt;br /&gt;
	return module.formatDate(module.convertNow_base(offset))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.convertNow2(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local offset = args[1]&lt;br /&gt;
	return module.formatDate2(module.convertNow_base(offset))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.convertToCE(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return module.convertToCE_base(args[1],args[2],args[3],args[4],args[5],args[6],args[7])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return module&lt;/div&gt;</summary>
		<author><name>UrnEn</name></author>
	</entry>
</feed>