官网地址:官网地址https://6tail.cn/calendar/api.html
1、导入依赖
<dependency>
<groupId>cn.6tail</groupId>
<artifactId>lunar</artifactId>
<version>1.3.9</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.13</version>
</dependency>
package com.example.demo.controller;
import com.example.demo.VO.ReligiousCultureDaoCalendarVO;
import com.nlf.calendar.Lunar;
import com.nlf.calendar.Tao;
import com.nlf.calendar.TaoFestival;
import io.swagger.annotations.ApiOperation;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* @Classname ReligiousCultureDaoCalendarController
* @Description 道历接口
* @Date 2024/4/7 12:17
* @Created by CaoJun
*/
@RestController
@RequestMapping("/religious/dao/calendar")
public class ReligiousCultureDaoCalendarController {
/**
* 选择日期获取某天道历详情
*/
@GetMapping("/selectDaysDate")
@ApiOperation("选择日期获取某天道历详情")
public ReligiousCultureDaoCalendarVO getInfo(@RequestParam(value = "dateString") String dateString) {
if (StringUtils.isEmpty(dateString)) {
throw new RuntimeException("日期不能为空!");
}
ReligiousCultureDaoCalendarVO religiousCultureDaoCalendarVO=new ReligiousCultureDaoCalendarVO();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(dateString);
Tao d = Tao.fromLunar(Lunar.fromDate(date));
List<TaoFestival> l = d.getFestivals();
religiousCultureDaoCalendarVO.setFestivals(l);
String monthInChinese = d.getMonthInChinese();
String dayInChinese = d.getDayInChinese();
String s1 = monthInChinese + "月" + dayInChinese;
religiousCultureDaoCalendarVO.setMonthAndDayInChineseNL(s1);
int year = d.getYear();
String daoYear ="道歷"+year+"年";
religiousCultureDaoCalendarVO.setDaoCalendarYear(daoYear);
// 转阴历
Lunar lunar = d.getLunar();
// 分割数据
String[] parts = lunar.toFullString().split(" ");
String part = parts[1];
// 使用正则表达式删除括号及括号内的内容
String result = part.replaceAll("\\(.*?\\)", "");
// 输出结果
religiousCultureDaoCalendarVO.setYearCalendar(result);
String part1 = parts[2];
// 使用正则表达式删除括号及括号内的内容
String result1 = part1.replaceAll("\\(.*?\\)", "");
// 输出结果
religiousCultureDaoCalendarVO.setMonthCalendar(result1);
String part2 = parts[3];
String result12 = part2.replaceAll("\\(.*?\\)", "");
religiousCultureDaoCalendarVO.setDayCalendar(result12);
// System.out.println(d.toFullString());
// System.out.println("-----------------------");
// 正月七日,名:举迁赏会,此日上元赐福,天官同地水二官考校罪福。
// 七月七日,名:庆生中会,此日中元赦罪,地官同天水二官考校罪福。
// 十月十五日,名:建生大会,此日下元解厄,水官同天地二官考校罪福。
// 其三会之日,三官考核功过,三魂攒送生人善恶。又谓之三魂会日,宜焚香忏过。
// .isDaySanHui()
// 当日是否三会日,返回true/false,具体名称在节日里
boolean daySanHui = d.isDaySanHui();
religiousCultureDaoCalendarVO.setIsDaySanHui(daySanHui);
// 正月十五,上元节;七月十五,中元节,十月十五,下元节。
// 其三元之日,天地水三官二十七府百二十曹之神,先于三会日考校罪福,至三元日上奏金阙,以降祸福。其日可行道建斋,修身谢过。
// .isDaySanYuan()
// 当日是否三元日,返回true/false,具体名称在节日里
boolean daySanYuan = d.isDaySanYuan();
religiousCultureDaoCalendarVO.setIsDaySanYuan(daySanYuan);
// 立春:东北方度仙上圣天尊同梵炁始青天君下降。
// 春分:东方玉宝星上天尊同青帝九炁天君下降。
// 立夏:东南方好生度命天尊同梵炁始丹天君下降。
// 夏至:南方玄真万福天尊同赤帝三炁天君下降。
// 立秋:西南方太灵虚皇天尊同梵炁始素天君下降。
// 秋分:西方太妙至极天尊同白帝七炁天君下降。
// 立冬:西北方无量太华天尊同梵炁始玄天君下降。
// 冬至:北方玄上玉宸天尊同黑帝五炁天君下降。
// 其曰八极天尊天君同下人问,录人罪福,观察善恶。
// .isDayBaJie()
// 当日是否八节日,返回true/false,具体名称在节日里
boolean dayBaJie = d.isDayBaJie();
religiousCultureDaoCalendarVO.setIsDayBaJie(dayBaJie);
// 正月一日,名天腊,此日五帝会于东方九炁青天。
// 五月五日,名地腊,此日五帝会于南方三炁丹天。
// 七月七日,名道德腊,此日五帝会于西方七炁素天。
// 十月一日,名民岁腊,此日五帝会于北方五炁黑天。
// 十一月八日,名王侯腊,此日五帝会于上方玄都玉京。
// 其五帝攒会之日,此日酆都北阴天帝考校鬼魂,查生人祖考及见世子孙所行善恶,以定罪福。此日皆累生人,宜当醮谢,须凭法力祭祀,追赎涂苦,一一得福,常日祭祀,不可享也。
// .isDayWuLa()
// 当日是否五腊日,返回true/false,具体名称在节日里
boolean dayWuLa = d.isDayWuLa();
religiousCultureDaoCalendarVO.setIsDayWuLa(dayWuLa);
// 天会丙午,地会壬午,人会壬子,日会庚午,月会庚申,星辰会辛酉,五行会甲辰,四时会甲戌。
// 其节会宜斋戒焚香,醮告星辰,看经拜忏,祭祀先灵,可以延年益算。
// .isDayBaHui()
// 当日是否八会日,返回true/false,具体名称在节日里
boolean dayBaHui = d.isDayBaHui();
religiousCultureDaoCalendarVO.setIsDayBaHui(dayBaHui);
// 戊日为禁忌日,道场会在戊日休息。戊日又分为明戊日、暗戊日。
// 明戊日即天干为“戊”的日子。
// 暗戊日则按口诀推算:
// 正羊(未日)二犬(戍日)三在辰,四月期间不犯寅,五午六子七鸡(酉日)位,八月周流又到申,九蛇(巳日)十猪(亥日)十一兔(卯日),十二牛头(丑日)重千斤。
// .isDayWu()
// 当日是否戊日,返回true/false
// .isDayMingWu()
// 当日是否明戊日,返回true/false
// .isDayAnWu()
// 当日是否暗戊日,返回true/false
boolean dayMingWu = d.isDayMingWu();
religiousCultureDaoCalendarVO.setIsDayMingWu(dayMingWu);
boolean dayAnWu = d.isDayAnWu();
religiousCultureDaoCalendarVO.setIsDayAnWu(dayAnWu);
// 天赦日,四时专气、生育万物、免罪赦过、天帝赦免众生罪过吉日,最利于消灾化煞,祈福延寿。天赦日最忌杀生,遇此日婚娶、宴请不要肆意杀生,尽量提前购买三净肉以备使用或者干脆素宴。
// 天赦日规则:
// 春戊寅、夏甲午、秋戊申、冬甲子。
// .isDayTianShe()
// 当日是否天赦日,返回true/false
boolean dayTianShe = d.isDayTianShe();
religiousCultureDaoCalendarVO.setIsDayTianShe(dayTianShe);
} catch (ParseException e) {
e.printStackTrace();
}
return religiousCultureDaoCalendarVO;
}
}
package com.example.demo.VO;
import com.nlf.calendar.TaoFestival;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Classname ReligiousCultureDaoCalendarVO
* @Description 道历的返回的VO
* @Date 2024/4/7 12:23
* @Created by CaoJun
*/
@Data
public class ReligiousCultureDaoCalendarVO {
/** 农历的月 */
@ApiModelProperty("农历的月日")
private String MonthAndDayInChineseNL;
/** 农历的日 */
@ApiModelProperty("道历年")
private String DaoCalendarYear;
@ApiModelProperty("获取某一天的节日")
private List<TaoFestival> Festivals;
@ApiModelProperty("获取农历年")
private String yearCalendar;
@ApiModelProperty("获取农历月")
private String monthCalendar;
@ApiModelProperty("获取农历日")
private String dayCalendar;
/** 当日是否三会日 */
@ApiModelProperty("当日是否三会日")
private Boolean isDaySanHui;
/** 当日是否三元日 */
@ApiModelProperty("当日是否三元日")
private Boolean isDaySanYuan;
/** 当日是否八节日 */
@ApiModelProperty("当日是否八节日")
private Boolean isDayBaJie;
/** 当日是否五腊日 */
@ApiModelProperty("当日是否五腊日")
private Boolean isDayWuLa;
/** 当日是否八会日 */
@ApiModelProperty("当日是否八会日")
private Boolean isDayBaHui;
/** 当日是否明戊日 */
@ApiModelProperty("当日是否明戊日")
private Boolean isDayMingWu;
/** 当日是否明戊日 */
@ApiModelProperty("当日是否暗戊日")
private Boolean isDayAnWu;
/** 当日是否天赦日 */
@ApiModelProperty("当日是否天赦日")
private Boolean isDayTianShe;
}
实现的效果如下: