欢迎来到奇葩栖息地!欢迎加入Discord服务器:XfrfHCzfbW请先至特殊:参数设置验证邮箱后再进行编辑。特殊:参数设置挑选自己想要使用的小工具!不会编辑?请至这里学习Wikitext语法。

模块:Chinese calendar:修订间差异

来自奇葩栖息地
删除424字节 、​ 2025年1月7日 (星期二)
//Edit via InPageEdit
(//Edit via InPageEdit)
标签已被回退
(//Edit via InPageEdit)
标签手工回退
第233行:
end
bitval = bitval * 2
a = math.floor(a / 2)
b = math.floor(b / 2)
end
return result
第243行:
if a <= 0 then return 0 end
if b < 0 then return a end
return math.floor(a / (2 ^ b))
end
 
第286行:
if y < 1900 or y > 2100 then return 0 end
if m > 12 or m < 1 then return 0 end
returnif band(lunarInfo[y - 1900], rshift(0x10000, m - 1)) ~= 0 and 30 or 29then
elsereturn 30
end
return 29
end
 
第312行 ⟶ 第315行:
end
 
-- 计算距离1900年1月3031日的天数
local solarMonthDaysbaseDate = os.time({31, 28,year 31,= 301900, 31,month 30,= 311, 31,day 30,= 31, 30, 31})
local offsettargetDate = -30os.time({ --year 1900年1月30日为基准日期= y, month = m, day = d })
local offset = math.floor((targetDate - baseDate) / (24 * 60 * 60))
 
-- 计算年份的天数贡献
for i = 1900, y - 1 do
if (i % 4 == 0 and i % 100 ~= 0) or (i % 400 == 0) then
offset = offset + 366
else
offset = offset + 365
end
end
 
-- 计算月份的天数贡献
for i = 1, m - 1 do
if i == 2 then
if (y % 4 == 0 and y % 100 ~= 0) or (y % 400 == 0) then
offset = offset + 29
else
offset = offset + 28
end
else
offset = offset + solarMonthDays[i]
end
end
 
-- 加上当月天数
offset = offset + d
 
-- 计算农历年
第354行 ⟶ 第333行:
end
 
-- 计算农历月
local lm = 1
local leapld = leapMonth(ly)1
local isLeap = false
local ldleap = offset + 1leapMonth(ly)
 
temp-- = 0计算月
while offset > 0 and lm < 13 do
if leap > 0 and lm == leap + 1 and not isLeap then
第369行 ⟶ 第349行:
end
offset = offset - temp
if not (leap > 0isLeap and lm == leap + 1 andthen isLeap) then= false end
lm = lm + 1
end
 
if lm == leap + 1 then
-- 计算日
if (i % 4offset == 0 and ileap % 100 ~=> 0) orand (i % 400lm == 0)leap + 1 then
if i == 2isLeap then
isLeap = false
endelse
offsetisLeap = offset + 29true
offsetlm = offsetlm +- 3661
end
end
 
if offset < 0 then
offset = offset + temp
lm = lm - 1
end
offsetld = offset + 3651
 
-- 计算农历日格式化输出
local ld = offset + 1
 
-- 返回格式化结果
local gzYear = Gan[((ly - 4) % 10) + 1] .. Zhi[((ly - 4) % 12) + 1]
local lMonth = nStr3[lm]
第396行 ⟶ 第379行:
lDay = "三十"
else
lDay = nStr2[math.floor(ld / 10) + 1] .. nStr1[(ld % 10) + 1]
end
 
2,099

个编辑