欢迎来到奇葩栖息地!欢迎加入Discord服务器:XfrfHCzfbW。请先至特殊:参数设置验证邮箱后再进行编辑。在特殊:参数设置挑选自己想要使用的小工具!不会编辑?请至这里学习Wikitext语法。
模块:Chinese calendar:修订间差异
来自奇葩栖息地
//Edit via InPageEdit
SkyEye FAST(讨论 | 贡献) (//Edit via InPageEdit) |
SkyEye FAST(讨论 | 贡献) (//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
end
-- 计算农历闰月天数
local function leapDays(y)
if
local m = leapMonth(y)
if band(lunarInfo[y - 1900], 0x10000) ~= 0 then▼
if m == 0 then return 0
end
return
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
if m > 12 or m < 1 then return 0 end
if band(lunarInfo[y - 1900], rshift(0x10000, m)) ~= 0 then
return 30
|