//Edit via InPageEdit
SkyEye FAST(讨论 | 贡献) (//Edit via InPageEdit) |
SkyEye FAST(讨论 | 贡献) (//Edit via InPageEdit) |
||
第41行:
-- 节气数据(每个节气的日期偏移量)
local SOLAR_TERMS_OFFSET = {
}
第95行:
local day = extract(lunarCode, 18, 5)
return month, day
end
-- 计算节气的修正值,考虑年份差异带来的偏移
local function getTermOffset(year, termIndex)
local y = year - 1900
local n = math.floor(y * 0.2422)
local d = 0
if termIndex == 1 then -- 小寒
d = math.floor((y * 0.2422 + 3.87) - n)
elseif termIndex == 2 then -- 大寒
d = math.floor((y * 0.2422 + 18.73) - n)
else
-- 其他节气使用基础偏移量
return 0
end
return d
end
-- 计算节气
local function getSolarTerm(year, month, day)
local
--
local baseDay = SOLAR_TERMS_OFFSET[idx]
local offset = getTermOffset(year, idx)
local termDay = baseDay + offset
--
if termDay > 31 then
termDay = termDay - 31
end
▲ if day == theoreticalDay % 31 then
end
▲ return SOLAR_TERMS[termIndex + 1]
end
第178行 ⟶ 第199行:
function p.toLunar(frame)
local date = frame.args[1]
local showSolarTerm = frame.args.showSolarTerm
if type(showSolarTerm) == "string" then
showSolarTerm = (showSolarTerm == "true" or showSolarTerm == "1")
end
-- 输入格式验证
if not date:match('^%d%d%d%d%-%d%d%-%d%d$') then
return '错误:日期格式无效,请使用YYYY-MM-DD格式'
end
local year = tonumber(date:sub(1, 4))
第210行 ⟶ 第239行:
local solarTerm = getSolarTerm(year, month, day)
if solarTerm then
result = result .. '
end
end
|