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;


}

实现的效果如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/752523.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

斜光测距的原理及python实现

1.前言 最近做了一个基于opencv的斜光测距的小项目&#xff0c;东西不多&#xff0c;但是很有意思&#xff0c;值得拿出来学一学。项目里面需要比较精确的定位功能&#xff0c;将前人matlab代码移植到python上&#xff0c;并且做了一些优化&#xff0c;简化逻辑(毕竟我是专业的…

uView 2.0:uni-app生态的利剑出鞘,引领UI框架新纪元

引言 随着移动互联网的快速发展&#xff0c;跨平台应用开发成为了开发者们关注的焦点。uni-app&#xff0c;一个基于Vue.js的跨平台应用开发框架&#xff0c;因其高效、易用的特性而广受欢迎。在uni-app的生态系统中&#xff0c;UI框架的选择对于开发者而言至关重要。今天&…

AI 编程探索- iOS动态标签控件

需求分析&#xff1a; 标签根据文字长度&#xff0c;自适应标签居中显示扩展 超过内容显示范围&#xff0c;需要换行显示&#xff0c;且保持居中显示 AI实现过程 提问&#xff1a; 回答&#xff1a; import UIKit import SnapKitclass DynamicLabelsContainerView: UIView…

docker 多网卡指定网卡出网

前言 宿主机中有多个网卡 ens160 192.168.4.23/20 内网通信用 ens192 10.31.116.128/24 出公网访问-1 ens193 10.31.116.128/24 出公网访问-2 现在需要不同容器中不同出网访问&#xff0c;举例 容器1 192.168.0.1/20 网段走宿主机 ens160网卡&#xff0c;否则全部走ens192 网…

CAS自旋解析

CAS全称CompareAndSwap(比较并交换)&#xff0c;是cpu的指令&#xff0c;调用时不涉及上下文的切换。Java中属于乐观锁的一种&#xff0c;具体流程如下图&#xff1a; 具体的实现使用的是Unsafe类去调用native修饰的compareAndSwap方法&#xff0c;4个字段分别是对象实例&#…

Shell编程实战

脚本编程步骤 脚本编程一般分为以下几个步骤: 需求分析:根据系统管理的需求&#xff0c;分析脚本要实现的功能、功能实现的层次、实现的命令与语句等; 命令测试:将要用到的命令逐个进行测试&#xff0c;以决定使用的选项、要设置的变量等: 脚本编程:将测试好的命令写入到脚本文…

庆祝东兴市金顺心贸易有限公司代理越南三原竹系列产品五周年

&#x1f389;庆祝金顺心贸易代理越南三原竹系列产品五周年&#xff01;这五年&#xff0c;我们共同成长&#xff0c;每一份产品都承载着越南的美味与匠心。感恩有你们&#xff0c;未来的路&#xff0c;我们继续携手前行&#xff0c;品味更多美好&#xff01;&#x1f962;&…

电子名片小程序源码系统 前后端分离 带完整的安装代码包以及搭建教程

系统概述 电子名片小程序源码系统是一款基于前后端分离架构的综合性平台&#xff0c;旨在为用户提供一个集销售名片和企业商城于一体的解决方案。该系统采用先进的技术手段&#xff0c;实现了个性化名片设计、便捷的销售功能、企业商城模块等一系列实用功能。同时&#xff0c;…

vue-cli 搭建项目

创建 router 目录 在一个.js文件中添加 打开外部命令 打开外部命令后&#xff0c;在指令栏输入npm i vue-router3.5.3 &#xff0c;等待下载 下载完成后 在 main.js 中配置路由 输入这些后&#xff0c;基本的配置就实现了 最后进行测试&#xff0c;验证是否配置 或者打开外部命…

springcloud第4季 分布式事务seata作用服务搭建1

一 seata作用 1.1 seata简介 1.seata是一款解决分布式事务的解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 1.2 seata的术语 一个中心&#xff1a;全局事务id&#xff0c;xid&#xff0c;在调用服务链路的上下文中进行传播。TC(Transa…

iPhone怎么恢复删除的数据?几款顶级iPhone数据恢复软件

从iOS设备恢复数据。 对于任何数据恢复软件来说&#xff0c;从iOS设备恢复数据都是一项复杂的任务&#xff0c;因为Apple已将众多数据保护技术集成到现代iPhone和iPad中。其中包括硬件加密和文件级加密。iOS 上已删除的数据只能通过取证文件工件搜索来找到&#xff0c;例如分析…

最新扣子(Coze)实战案例:图像流工具之空间风格化,完全免费教程

&#x1f9d9;‍♂️ 大家好&#xff0c;我是斜杠君&#xff0c;手把手教你搭建扣子AI应用。 &#x1f4dc; 本教程是《AI应用开发系列教程之扣子(Coze)实战教程》&#xff0c;完全免费学习。 &#x1f440; 关注斜杠君&#xff0c;可获取完整版教程。&#x1f44d;&#x1f3f…

EHS,制造业安全绿色生产的隐形守护神

当我们提到EHS&#xff0c;可能很多人会稍感陌生&#xff0c;毕竟它不是一个日常生活中经常提及的词汇。但实际上&#xff0c;EHS在我们的生活和工作中扮演着极其重要的角色&#xff0c;尤其对制造业而言更是可持续发展经营管理的重中之重。 一、EHS是什么意思&#xff1f; E…

vue项目内网部署流程

由于第一次部署&#xff0c;也是第一次自己用 Nginx , 百度了很久&#xff0c;没有看到想看的步骤&#xff0c;所以作此文以记录&#xff0c;也是给像我一样的人一个大概方向。 注&#xff1a;windows系统 1、首先要弄好jar包的运行环境。 安装jdk 详细安装过程引用 jdk的完整…

码农:如何快速融入团队

问题&#xff1a; 码农如何快速融入团队&#xff1f; 记住一个标准&#xff1a;能干事、能抗事。 总结一个字&#xff1a; 靠谱。 适用范围&#xff1a;新手码农、老司机码农、测试、DBA、运维、产品经理、项目经理、架构师、技术专家、。。。。适用于任何行业的打工者。 下面要…

伙伴活动推荐丨当 RTC 遇上 AI ,大模型创新应用星城论道

近年来&#xff0c;音视频技术已成为推动在线新经济和企业数字化转型的重要力量。作为中部互联网产业高地&#xff0c;湖南长沙亦将音视频产业视为战略性新兴产业重点布局。 2024年7月6日&#xff0c;声网联合 CSDN 在湖南长沙举办声网城市沙龙&#xff0c;以“当 RTC 遇上 AI…

VMware Workstation环境下,DHCP服务的安装配置,用ubuntu来测试

需求说明: 某企业信息中心计划使用IP地址17216.11.0用于虚拟网络测试,注册域名为xyz.net.cn.并将172.16.11.2作为主域名的服务器(DNS服务器)的IP地址,将172.16.11.3分配给虚拟网络测试的DHCP服务器,将172.16.11.4分配给虚拟网络测试的web服务器,将172.16.11.5分配给FTP服务器…

Matlab/simulink三段式电流保护

电流1段仿真波形如下所示 电流2段仿真波形如下所示 电流3段仿真波形如下所示

SSL证书在网站访问中的核心作用及快速申请指南

在当今的互联网时代&#xff0c;数据安全与用户隐私保护成为了网站运营不可或缺的一部分。SSL证书作为一种重要的网络安全协议&#xff0c;它在网站访问中扮演着至关重要的角色&#xff0c;主要体现在以下几个方面&#xff1a; 一、加密通信内容&#xff1a;SSL证书通过建立安…

系统进程与计划任务

目录 系统进程 ps命令 top命令 pgrep命令 pstree命令 jobs命令 计划任务 一次性计划任务at 周期性计划任务crontab 系统进程 我们系统在打开的一瞬间就会加载很多进程&#xff0c;那么我们该如何查看这些进程和管理这些进程呢&#xff1f; ps命令 常用的参数 -a&am…