From c819b5f74663450d3ea3e31457960f7adc0f1670 Mon Sep 17 00:00:00 2001 From: H1d3rOne Date: Sun, 8 Mar 2026 01:55:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=94=9F=E8=82=96?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=BB=93=E6=9E=9C=E4=B8=8D=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用公历年份直接计算生肖和干支 - 修复之前使用农历日期导致年份边界计算错误的问题 --- .../java/xuan/controller/ToolController.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/xuan/controller/ToolController.java b/src/main/java/xuan/controller/ToolController.java index 92b4fc1..5d467cc 100644 --- a/src/main/java/xuan/controller/ToolController.java +++ b/src/main/java/xuan/controller/ToolController.java @@ -111,9 +111,19 @@ public class ToolController { try { int year = Integer.parseInt(params.get("year").toString()); - Solar solar = Solar.fromYmd(year, 1, 1); - Lunar lunar = solar.getLunar(); - String shengXiao = lunar.getYearShengXiao(); + String[] shengXiaoList = {"鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"}; + String[] ganList = {"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"}; + String[] zhiList = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"}; + + int shengXiaoIndex = (year - 4) % 12; + if (shengXiaoIndex < 0) shengXiaoIndex += 12; + String shengXiao = shengXiaoList[shengXiaoIndex]; + + int ganIndex = (year - 4) % 10; + if (ganIndex < 0) ganIndex += 10; + int zhiIndex = (year - 4) % 12; + if (zhiIndex < 0) zhiIndex += 12; + String ganZhi = ganList[ganIndex] + zhiList[zhiIndex]; Map data = new HashMap<>(); data.put("year", year); @@ -134,7 +144,7 @@ public class ToolController { shengXiaoInfo.put("猪", "亥猪,五行属水,善良宽厚,乐观豁达"); data.put("info", shengXiaoInfo.getOrDefault(shengXiao, "未知生肖")); - data.put("ganZhi", lunar.getYearInGanZhi()); + data.put("ganZhi", ganZhi); result.put("success", true); result.put("data", data);