Module:IUCDate

此后如竟没有炬火,我便是唯一的光。
QWERTY 52 38留言 | 贡献2022年4月28日 (四) 21:08的版本

此模块的文档可以在Module:IUCDate/doc创建

local module = {}
origin = os.time({year=2022,month=4,day=1,hour=22,minute=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.timeDelta(time)
	-- 与纪元起点的差值
	return os.time(time) - origin
end

function module.sec2date(sec)
	local micNum = math.floor(sec / mic + 0.00000000001)
	local yearNum = 0
	if micNum >= 99995 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 * 10000
	local hourNum = math.floor(micNum / 100 + 0.00000000001)
	micNum = micNum - hourNum * 10000
	return {cycleNum, divisionNum, yearNum, seasonNum, weekNum, hourNum, micNum}
end

return module