SpringBoot集成道历(实现道历日期查询)

 

官网地址:官网地址icon-default.png?t=N7T8https://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;


}

实现的效果如下:

 

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想买CT5的小曹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值