From 78cad1974877d164e69e44d988088cdeda1387f1 Mon Sep 17 00:00:00 2001 From: 6tail <6tail@6tail.cn> Date: Fri, 18 Sep 2020 18:59:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=82=E6=B0=94=E8=A1=A8=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=86=9C=E5=8E=86=E4=B8=8A=E5=B9=B4=E6=9C=AB=E7=9A=84=E5=A4=A7?= =?UTF-8?q?=E9=9B=AA=EF=BC=9B=E4=BF=AE=E5=A4=8D=E5=B9=B4=E5=88=9D=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E4=B8=8A=E4=B8=80=E8=8A=82=E4=BB=A4=E8=BF=94=E5=9B=9E?= =?UTF-8?q?null=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/nlf/calendar/Lunar.java | 51 ++++++++++++++++------- 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/nlf/calendar/Lunar.java b/src/main/java/com/nlf/calendar/Lunar.java index 798215f..1fb71e1 100644 --- a/src/main/java/com/nlf/calendar/Lunar.java +++ b/src/main/java/com/nlf/calendar/Lunar.java @@ -12,6 +12,14 @@ import com.nlf.calendar.util.SolarUtil; * */ public class Lunar{ + /** 节气表头部追加农历上年末的节气名(节令:大雪),以示区分 */ + public static final String JIE_QI_PREPEND = "DA_XUE"; + /** 节气表尾部追加农历下年初的节气名(气令:冬至),以示区分 */ + public static final String JIE_QI_APPEND = "DONG_ZHI"; + /** 农历年初节气名(气令:冬至) */ + public static final String JIE_QI_FIRST = "冬至"; + /** 农历年末节气名(节令:大雪) */ + public static final String JIE_QI_LAST = "大雪"; /** 1弧度对应的角秒 */ private static final double SECOND_PER_RAD = 180 * 3600 / Math.PI; /** 节气表,国标以冬至为首个节气 */ @@ -389,14 +397,17 @@ public class Lunar{ if (calcJieQi(w) > jd){ w -= 365.2422; } + //追加上一农历年末的大雪 + double q = calcJieQi(w - 15.2184); + jieQi.put(JIE_QI_PREPEND, Solar.fromJulianDay(qiAccurate2(q) + Solar.J2000)); int size = JIE_QI.length; for (int i=0;i=0 && solarYmd.compareTo(yuShui)<0){ + if(solarYmd.compareTo(dongZhi)>=0 && solarYmd.compareTo(yuShui)<0){ asc = true; start = 1; } else if(solarYmd.compareTo(yuShui)>=0 && solarYmd.compareTo(guYu)<0){ @@ -1916,7 +1934,7 @@ public class Lunar{ } /** - * 获取下一节(顺推的第一个节) + * 获取下一节令(顺推的第一个节令) * @return 节气 */ public JieQi getNextJie(){ @@ -1924,7 +1942,7 @@ public class Lunar{ } /** - * 获取上一节(逆推的第一个节) + * 获取上一节令(逆推的第一个节令) * @return 节气 */ public JieQi getPrevJie(){ @@ -1964,8 +1982,11 @@ public class Lunar{ String today = solar.toYmdHms(); for(Map.Entry entry:jieQi.entrySet()){ String jq = entry.getKey(); - if("DONG_ZHI".equals(jq)){ - jq = "冬至"; + if(JIE_QI_APPEND.equals(jq)){ + jq = JIE_QI_FIRST; + } + if(JIE_QI_PREPEND.equals(jq)){ + jq = JIE_QI_LAST; } if(filter){ if(!filters.contains(jq)){