企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
二十四节气包括十二节(立春、惊蛰、清明、立夏、芒种、小暑、立秋、白露、寒露、立冬、大雪、小寒)和十二气(雨水、春分、谷雨、小满、夏至、大暑、处暑、秋分、霜降、小雪、冬至、大寒)。 > 节气的计算使用了[寿星天文历](http://www.nongli.net/sxwnl)的算法。 节气先后顺序为以冬至开始,以大雪结束,通常冬至位于阳历的上一年。 1. getJie() > 获取节令名(字符串),当匹配到键为`DA_XUE`的节令时,也返回中文的`大雪`,未匹配时返回空字符串 2. getQi() > 获取气令名(字符串),当匹配到键为`DONG_ZHI`的气令时,也返回中文的`冬至`,未匹配时返回空字符串 3. getJieQi() > 获取节气名(字符串),当匹配到键为`DA_XUE`的节令时,也返回中文的`大雪`,当匹配到键为`DONG_ZHI`的气令时,也返回中文的`冬至`,未匹配时返回空字符串 4. getJieQiTable() > 获取当年的节气表(键值对方式,键为节气名称,值为对应阳历。) 5. getJieQiList() > 获取当年的节气名称(按时间先后排序),由于js中getJieQiTable无法排序,所以提供该方法,某些语言(如java)中getJieQiTable已经排序,所以不提供该方法。 注意:为了在任何一天都能获取到上一节气、下一节气而不用考虑跨年的问题,在头部追加一个键为`DA_XUE`的节令来表示上个节气周期末的大雪;在最后追加一个键为`DONG_ZHI`的气令来表示阳历年末的冬至;同时,在最后追加一个键为`XIAO_HAN`的节令来表示下一阳历年初的小寒,追加一个键为`DA_HAN`的气令来表示下一阳历年初的大寒,追加一个键为`LI_CHUN`的气令来表示下一阳历年初的立春,追加`YU_SHUI`表示雨水,追加`JING_ZHE`表示惊蛰。所以最终节气表如下: >DA_XUE, 冬至, 小寒, 大寒, 立春, 雨水, 惊蛰, 春分, 清明, 谷雨, 立夏, 小满, 芒种, 夏至, 小暑, 大暑, 立秋, 处暑, 白露, 秋分, 寒露, 霜降, 立冬, 小雪, 大雪, DONG_ZHI, XIAO_HAN, DA_HAN, LI_CHUN, YU_SHUI, JING_ZHE 其中`冬至`到`大雪`为一个节气周期,`DA_XUE`和`冬至`位于阳历上一年,`小寒`到`DONG_ZHI`位于阳历同一年,`XIAO_HAN`、`DA_HAN`、`LI_CHUN`、`YU_SHUI`、和`JING_ZHE`位于阳历下一年。可参考下方示例打印的节气表辅助理解。 为了更好的封装,单独提供了一个新的JieQi对象,包含节气名称和阳历日期,JieQi对象提供如下方法: 1. getName() > 获取名称(字符串) 2. getSolar() > 获取阳历对象 3. isJie() > 是否节令,返回`true/false` 4. isQi() > 是否气令,返回`true/false` 同时也为Lunar对象提供了新的方法,更加方便的获取临近的节气: 1. getPrevJieQi(wholeDay) > 获取上一节气(逆推的第一个节气)。参数`wholeDay`传true/false,true代表按天匹配,false代表按精确时刻匹配。返回`JieQi对象` 2. getNextJieQi(wholeDay) > 获取下一节气(顺推的第一个节气)。参数`wholeDay`传true/false,true代表按天匹配,false代表按精确时刻匹配。返回`JieQi对象` 3. getCurrentJieQi() > 获取当前节气,返回`JieQi对象`,当天无节气返回null 4. getPrevJie(wholeDay) > 获取上一节令(逆推的第一个节令)。参数`wholeDay`传true/false,true代表按天匹配,false代表按精确时刻匹配。返回`JieQi对象` 5. getNextJie(wholeDay) > 获取下一节令(顺推的第一个节令)。参数`wholeDay`传true/false,true代表按天匹配,false代表按精确时刻匹配。返回`JieQi对象` 6. getCurrentJie() > 获取当天节令,返回`JieQi对象`,当天无节令返回null 7. getPrevQi(wholeDay) > 获取上一气令(逆推的第一个气令)。参数`wholeDay`传true/false,true代表按天匹配,false代表按精确时刻匹配。返回`JieQi对象` 8. getNextQi(wholeDay) > 获取下一气令(顺推的第一个气令)。参数`wholeDay`传true/false,true代表按天匹配,false代表按精确时刻匹配。返回`JieQi对象` 9. getCurrentQi() > 获取当天气令,返回`JieQi对象`,当天无气令返回null ### 示例代码 ``` //农历2020年3月12日是清明节 let d = Lunar.fromYmd(2023,11,10); console.log('节:'+d.getJie()); console.log('气:'+d.getQi()); console.log('节气:'+d.getJieQi()); //获取节气表 const jieQi = d.getJieQiTable(); //获取立春交接的准确时间 let lcIndex = jieQi.findIndex((element):boolean => element.name == '立春'); console.log('立春:'+jieQi[lcIndex].solar.toYmdHms()); //所有节气及时间 const l = d.getJieQiList(); for (let i=0, j=l.length; i<j; i++){ let index = jieQi.findIndex((element):boolean => element.name == l[i]); console.log(jieQi[index].name + ' = ' + jieQi[index].solar.toYmdHms()); } //获取上(下)一个节气 d = Lunar.fromDate(new Date()); const prev = d.getPrevJieQi(); console.log('上一节气 = ' + prev.getName() + ' ' +prev.getSolar().toYmdHms()); const next = d.getNextJieQi(); console.log('下一节气 = ' + next.getName() + ' ' +next.getSolar().toYmdHms()); ```