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)){