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

模块:Chinese calendar:修订间差异

来自奇葩栖息地
添加515字节 、​ 2025年1月7日 (星期二)
//Edit via InPageEdit
(//Edit via InPageEdit)
(//Edit via InPageEdit)
第221行:
-- 实现位运算函数
local function band(a, b)
if not a or not b then return 0 end
local result = 0
local bitval = 1
 
-- 处理负数或0的情况
if a <= 0 or b <= 0 then return 0 end
 
while a > 0 and b > 0 do
if a % 2 == 1 and b % 2 == 1 then
第235行 ⟶ 第240行:
 
local function rshift(a, b)
if not a or not b then return 0 end
if a <= 0 then return 0 end
if b < 0 then return a end
return math.floor(a / (2^b))
end
第240行 ⟶ 第248行:
-- 计算农历闰月月份
local function leapMonth(y)
if y < 1900 or y > 2100 then return 0 end
return band(lunarInfo[y - 1900], 0xf)
local index = y - 1900
if index < 0 or index >= #lunarInfo then return 0 end
return band(lunarInfo[y - 1900index], 0xf)
end
 
-- 计算农历闰月天数
local function leapDays(y)
if leapMonth(y) ~=< 01900 or y > 2100 then return 0 end
local m = leapMonth(y)
if band(lunarInfo[y - 1900], 0x10000) ~= 0 then
if m == 0 then return 0 return 30end
if band(lunarInfo[y - 1900], 0x10000) ~= 0 then
else
return 2930
end
end
return 029
end
 
-- 计算农历年天数
local function lYearDays(y)
if y < 1900 or y > 2100 then return 0 end
local sum = 348
local i = 0x8000
local idx = y - 1900
if idx < 0 or idx >= #lunarInfo then return 0 end
 
while i > 0x8 do
if band(lunarInfo[idx], i) ~= 0 then
第271行 ⟶ 第284行:
-- 计算农历月份天数
local function monthDays(y, m)
if my >< 121900 or my <> 12100 then return -10 end
if m > 12 or m < 1 then return 0 end
if band(lunarInfo[y - 1900], rshift(0x10000, m)) ~= 0 then
return 30
2,099

个编辑