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


     

    官网地址:官网地址icon-default.png?t=N7T8https://6tail.cn/calendar/api.html

     

     1、导入依赖

    1. cn.6tail
    2. lunar
    3. 1.3.9
    4. org.projectlombok
    5. lombok
    6. io.swagger
    7. swagger-annotations
    8. 1.5.13
    1. package com.example.demo.controller;
    2. import com.example.demo.VO.ReligiousCultureDaoCalendarVO;
    3. import com.nlf.calendar.Lunar;
    4. import com.nlf.calendar.Tao;
    5. import com.nlf.calendar.TaoFestival;
    6. import io.swagger.annotations.ApiOperation;
    7. import org.springframework.util.StringUtils;
    8. import org.springframework.web.bind.annotation.GetMapping;
    9. import org.springframework.web.bind.annotation.RequestMapping;
    10. import org.springframework.web.bind.annotation.RequestParam;
    11. import org.springframework.web.bind.annotation.RestController;
    12. import java.text.ParseException;
    13. import java.text.SimpleDateFormat;
    14. import java.util.Date;
    15. import java.util.List;
    16. /**
    17. * @Classname ReligiousCultureDaoCalendarController
    18. * @Description 道历接口
    19. * @Date 2024/4/7 12:17
    20. * @Created by CaoJun
    21. */
    22. @RestController
    23. @RequestMapping("/religious/dao/calendar")
    24. public class ReligiousCultureDaoCalendarController {
    25. /**
    26. * 选择日期获取某天道历详情
    27. */
    28. @GetMapping("/selectDaysDate")
    29. @ApiOperation("选择日期获取某天道历详情")
    30. public ReligiousCultureDaoCalendarVO getInfo(@RequestParam(value = "dateString") String dateString) {
    31. if (StringUtils.isEmpty(dateString)) {
    32. throw new RuntimeException("日期不能为空!");
    33. }
    34. ReligiousCultureDaoCalendarVO religiousCultureDaoCalendarVO=new ReligiousCultureDaoCalendarVO();
    35. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    36. try {
    37. Date date = sdf.parse(dateString);
    38. Tao d = Tao.fromLunar(Lunar.fromDate(date));
    39. List l = d.getFestivals();
    40. religiousCultureDaoCalendarVO.setFestivals(l);
    41. String monthInChinese = d.getMonthInChinese();
    42. String dayInChinese = d.getDayInChinese();
    43. String s1 = monthInChinese + "月" + dayInChinese;
    44. religiousCultureDaoCalendarVO.setMonthAndDayInChineseNL(s1);
    45. int year = d.getYear();
    46. String daoYear ="道歷"+year+"年";
    47. religiousCultureDaoCalendarVO.setDaoCalendarYear(daoYear);
    48. // 转阴历
    49. Lunar lunar = d.getLunar();
    50. // 分割数据
    51. String[] parts = lunar.toFullString().split(" ");
    52. String part = parts[1];
    53. // 使用正则表达式删除括号及括号内的内容
    54. String result = part.replaceAll("\\(.*?\\)", "");
    55. // 输出结果
    56. religiousCultureDaoCalendarVO.setYearCalendar(result);
    57. String part1 = parts[2];
    58. // 使用正则表达式删除括号及括号内的内容
    59. String result1 = part1.replaceAll("\\(.*?\\)", "");
    60. // 输出结果
    61. religiousCultureDaoCalendarVO.setMonthCalendar(result1);
    62. String part2 = parts[3];
    63. String result12 = part2.replaceAll("\\(.*?\\)", "");
    64. religiousCultureDaoCalendarVO.setDayCalendar(result12);
    65. // System.out.println(d.toFullString());
    66. // System.out.println("-----------------------");
    67. // 正月七日,名:举迁赏会,此日上元赐福,天官同地水二官考校罪福。
    68. // 七月七日,名:庆生中会,此日中元赦罪,地官同天水二官考校罪福。
    69. // 十月十五日,名:建生大会,此日下元解厄,水官同天地二官考校罪福。
    70. // 其三会之日,三官考核功过,三魂攒送生人善恶。又谓之三魂会日,宜焚香忏过。
    71. // .isDaySanHui()
    72. // 当日是否三会日,返回true/false,具体名称在节日里
    73. boolean daySanHui = d.isDaySanHui();
    74. religiousCultureDaoCalendarVO.setIsDaySanHui(daySanHui);
    75. // 正月十五,上元节;七月十五,中元节,十月十五,下元节。
    76. // 其三元之日,天地水三官二十七府百二十曹之神,先于三会日考校罪福,至三元日上奏金阙,以降祸福。其日可行道建斋,修身谢过。
    77. // .isDaySanYuan()
    78. // 当日是否三元日,返回true/false,具体名称在节日里
    79. boolean daySanYuan = d.isDaySanYuan();
    80. religiousCultureDaoCalendarVO.setIsDaySanYuan(daySanYuan);
    81. // 立春:东北方度仙上圣天尊同梵炁始青天君下降。
    82. // 春分:东方玉宝星上天尊同青帝九炁天君下降。
    83. // 立夏:东南方好生度命天尊同梵炁始丹天君下降。
    84. // 夏至:南方玄真万福天尊同赤帝三炁天君下降。
    85. // 立秋:西南方太灵虚皇天尊同梵炁始素天君下降。
    86. // 秋分:西方太妙至极天尊同白帝七炁天君下降。
    87. // 立冬:西北方无量太华天尊同梵炁始玄天君下降。
    88. // 冬至:北方玄上玉宸天尊同黑帝五炁天君下降。
    89. // 其曰八极天尊天君同下人问,录人罪福,观察善恶。
    90. // .isDayBaJie()
    91. // 当日是否八节日,返回true/false,具体名称在节日里
    92. boolean dayBaJie = d.isDayBaJie();
    93. religiousCultureDaoCalendarVO.setIsDayBaJie(dayBaJie);
    94. // 正月一日,名天腊,此日五帝会于东方九炁青天。
    95. // 五月五日,名地腊,此日五帝会于南方三炁丹天。
    96. // 七月七日,名道德腊,此日五帝会于西方七炁素天。
    97. // 十月一日,名民岁腊,此日五帝会于北方五炁黑天。
    98. // 十一月八日,名王侯腊,此日五帝会于上方玄都玉京。
    99. // 其五帝攒会之日,此日酆都北阴天帝考校鬼魂,查生人祖考及见世子孙所行善恶,以定罪福。此日皆累生人,宜当醮谢,须凭法力祭祀,追赎涂苦,一一得福,常日祭祀,不可享也。
    100. // .isDayWuLa()
    101. // 当日是否五腊日,返回true/false,具体名称在节日里
    102. boolean dayWuLa = d.isDayWuLa();
    103. religiousCultureDaoCalendarVO.setIsDayWuLa(dayWuLa);
    104. // 天会丙午,地会壬午,人会壬子,日会庚午,月会庚申,星辰会辛酉,五行会甲辰,四时会甲戌。
    105. // 其节会宜斋戒焚香,醮告星辰,看经拜忏,祭祀先灵,可以延年益算。
    106. // .isDayBaHui()
    107. // 当日是否八会日,返回true/false,具体名称在节日里
    108. boolean dayBaHui = d.isDayBaHui();
    109. religiousCultureDaoCalendarVO.setIsDayBaHui(dayBaHui);
    110. // 戊日为禁忌日,道场会在戊日休息。戊日又分为明戊日、暗戊日。
    111. // 明戊日即天干为“戊”的日子。
    112. // 暗戊日则按口诀推算:
    113. // 正羊(未日)二犬(戍日)三在辰,四月期间不犯寅,五午六子七鸡(酉日)位,八月周流又到申,九蛇(巳日)十猪(亥日)十一兔(卯日),十二牛头(丑日)重千斤。
    114. // .isDayWu()
    115. // 当日是否戊日,返回true/false
    116. // .isDayMingWu()
    117. // 当日是否明戊日,返回true/false
    118. // .isDayAnWu()
    119. // 当日是否暗戊日,返回true/false
    120. boolean dayMingWu = d.isDayMingWu();
    121. religiousCultureDaoCalendarVO.setIsDayMingWu(dayMingWu);
    122. boolean dayAnWu = d.isDayAnWu();
    123. religiousCultureDaoCalendarVO.setIsDayAnWu(dayAnWu);
    124. // 天赦日,四时专气、生育万物、免罪赦过、天帝赦免众生罪过吉日,最利于消灾化煞,祈福延寿。天赦日最忌杀生,遇此日婚娶、宴请不要肆意杀生,尽量提前购买三净肉以备使用或者干脆素宴。
    125. // 天赦日规则:
    126. // 春戊寅、夏甲午、秋戊申、冬甲子。
    127. // .isDayTianShe()
    128. // 当日是否天赦日,返回true/false
    129. boolean dayTianShe = d.isDayTianShe();
    130. religiousCultureDaoCalendarVO.setIsDayTianShe(dayTianShe);
    131. } catch (ParseException e) {
    132. e.printStackTrace();
    133. }
    134. return religiousCultureDaoCalendarVO;
    135. }
    136. }

     

    1. package com.example.demo.VO;
    2. import com.nlf.calendar.TaoFestival;
    3. import io.swagger.annotations.ApiModelProperty;
    4. import lombok.Data;
    5. import java.util.List;
    6. /**
    7. * @Classname ReligiousCultureDaoCalendarVO
    8. * @Description 道历的返回的VO
    9. * @Date 2024/4/7 12:23
    10. * @Created by CaoJun
    11. */
    12. @Data
    13. public class ReligiousCultureDaoCalendarVO {
    14. /** 农历的月 */
    15. @ApiModelProperty("农历的月日")
    16. private String MonthAndDayInChineseNL;
    17. /** 农历的日 */
    18. @ApiModelProperty("道历年")
    19. private String DaoCalendarYear;
    20. @ApiModelProperty("获取某一天的节日")
    21. private List Festivals;
    22. @ApiModelProperty("获取农历年")
    23. private String yearCalendar;
    24. @ApiModelProperty("获取农历月")
    25. private String monthCalendar;
    26. @ApiModelProperty("获取农历日")
    27. private String dayCalendar;
    28. /** 当日是否三会日 */
    29. @ApiModelProperty("当日是否三会日")
    30. private Boolean isDaySanHui;
    31. /** 当日是否三元日 */
    32. @ApiModelProperty("当日是否三元日")
    33. private Boolean isDaySanYuan;
    34. /** 当日是否八节日 */
    35. @ApiModelProperty("当日是否八节日")
    36. private Boolean isDayBaJie;
    37. /** 当日是否五腊日 */
    38. @ApiModelProperty("当日是否五腊日")
    39. private Boolean isDayWuLa;
    40. /** 当日是否八会日 */
    41. @ApiModelProperty("当日是否八会日")
    42. private Boolean isDayBaHui;
    43. /** 当日是否明戊日 */
    44. @ApiModelProperty("当日是否明戊日")
    45. private Boolean isDayMingWu;
    46. /** 当日是否明戊日 */
    47. @ApiModelProperty("当日是否暗戊日")
    48. private Boolean isDayAnWu;
    49. /** 当日是否天赦日 */
    50. @ApiModelProperty("当日是否天赦日")
    51. private Boolean isDayTianShe;
    52. }

    实现的效果如下:

     

  • 相关阅读:
    百文买鸡和水仙花数问题(C#解法)
    Android S从桌面点击图标启动APP流程 (五)
    10.动态路由绑定怎么做
    Tornado 可以使用 nginx 提供负载均衡
    python 从一道作业题到制作一个图形界面的“诈金花”游戏
    Vue render 函数
    会话管理 : Cookie和Session
    [HDLBits] Edgecapture
    三天吃透MySQL面试八股文
    vue启动项目,npm run dev出现error:0308010C:digital envelope routines::unsupported
  • 原文地址:https://blog.csdn.net/weixin_46085718/article/details/139987504