基于Java代码实现判断春节、端午节、中秋节等法定节假日的方法

基于Java代码实现判断春节、端午节、中秋节等法定节假日的方法

这篇文章主要介绍了基于Java代码实现判断春节、端午节、中秋节等法定节假日的方法 的相关资料,需要的朋友可以参考下

一、前言

最近工作上遇到一个问题,后端有一个定时任务,需要用JAVA每天判断法定节假日、周末放假,上班等情况,其实想单独通过逻辑什么的去判断中国法定节假日的放假情况,基本不可能,因为国家每一年的假期可能不一样,是人为设定的;

所以只能依靠其它手段,能想到的比较靠谱的如下:

1.网络接口:有些数据服务商会提供,要么是收钱的,要么是次数限制,等等各种问题,效果不理想,可控性差,我也没试过,如:

2.在线解析网页信息,获取节假日情况:严重依赖被解析的网站网页,所以在选取网站的时候,要找稍微靠谱点的;

3.根据国家规定的法定节假日放假情况,每年录入系统,这种如果客户不怕麻烦的话。还是比较靠谱的;

本Demo将选择第二种来实现;

二、使用htmlunit在线解析网页信息,获取节假日情况

一开始是使用jsoup去解析网页的,效果不理想,如果网页是动态生成的时候,用jsoup遇到了各种问题,所以改成了htmlunit,总得来说htmlunit还是很强大的,能够模拟浏览器运行,被誉为java浏览器的开源实现;

首先去官网下载相关jar包,以及阅读相关文档:

我这里解析的网页是360的万年历:

日历界面如下:

被解析的 HTML格式如下:

实现步骤:

1、加载页面;

2、循环等待页面加载完成(可能会有一些动态页面,是用javascript生成);

3、根据网页格式解析html内容,并提取关键信息存入封装好的对象;

注意点:

1、难点在于判断是否休假及假期类型,由于原页面并没有标明每一天的假期类型,所以这里的逻辑要自己去实现,详情参考代码;

2、之所以有个静态latestVocationName变量,是防止出现以下情况(出现该情况的概率极低;PS:方法要每天调用一次,该变量才生效):

代码实现:

定义一个中国日期类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126package com.pichen.tools.getDate;

import java.util.Date;

public class ChinaDate {

/**

* 公历时间

*/

private Date solarDate;

/**

* 农历日

*/

private String lunar;

/**

* 公历日

*/

private String solar;

/**

* 是否是 休

*/

private boolean isVacation = false;

/**

* 如果是 休情况下的假期名字

*/

private String VacationName = "非假期";

/**

* 是否是 班

*/

private boolean isWorkFlag = false;

private boolean isSaturday = false;

private boolean isSunday = false;

/**

* @return the solarDate

*/

public Date getSolarDate() {

return solarDate;

}

/**

* @param solarDate the solarDate to set

*/

public void setSolarDate(Date solarDate) {

this.solarDate = solarDate;

}

/**

* @return the lunar

*/

public String getLunar() {

return lunar;

}

/**

* @param lunar the lunar to set

*/

public void setLunar(

中秋节图案 用java代码打出来_基于Java代码实现判断春节、端午节、中秋节等法定节假日的方法.doc...相关推荐

  1. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  2. java 随机手机验证码_基于Java随机生成手机短信验证码的实例代码|chu

    简单版 /** * 产生4位随机数(0000-9999) * * @return 4位随机数 */ public static String getFourRandom() { return Stri ...

  3. JAVA 油站管理系统_基于JAVA的全国加油站[实时油价]接口调用代码实例

    代码描述:基于JAVA的全国加油站[实时油价]接口调用代码实例 接口地址:https://www.juhe.cn/docs/api/id/7 1.[代码][Java]代码 import java.io ...

  4. java实现基金浮动_基于JAVA的重仓股基金接口调用代码实例

    代码描述:基于JAVA的重仓股基金接口调用代码实例 关联数据:重仓股基金 接口地址:http://www.juhe.cn/docs/api/id/27 1.[代码][Java]代码 import ja ...

  5. java+生成手机验证码_基于Java随机生成手机短信验证码的实例代码

    简单版 /** * 产生4位随机数(0000-9999) * * @return 4位随机数 */ public static String getFourRandom() { return Stri ...

  6. java农产品查询系统_基于java的农产品销售系统的设计与实现论文.docx

    基于java的农产品销售系统的设计与实现论文.docx 分类号_______________ 密级________________ UDC _______________ 学号_毕业设计(论文)论文题 ...

  7. java 计算移动平均线_基于Java语言开发的个性化股票分析技术:移动平均线(MA)...

    基于Java语言开发的个性化股票分析技术:移动平均线(MA) 基于 Java 语言开发的个性化股票分析技术:移动平均线(MA)移动平均线(MA)是以道·琼斯的"平均成本概念"为理论 ...

  8. java 静态对象赋值_基于Java class对象说明、Java 静态变量声明和赋值说明(详解)...

    先看下JDK中的说明: java.lang.Object java.lang.Class Instances of the class Class represent classes and inte ...

  9. java线程卡住排查_基于 Java 线程栈 排查问题

    除日志外,还有没有别的方式跟踪线上服务问题呢?或者,跟踪并排除日志里无法发现的问题? 方法当然是有的,就是通过现场快照定位并发现问题.我们所说的现场,主要指这两方面: Java 线程栈.线程栈是Jav ...

最新文章

  1. DB9公母头引脚定义
  2. 使用 ABAP 开发的一个基于 Web Socket 的小工具,能提高程序员日常工作效率
  3. 11-散列3 QQ帐户的申请与登陆 (25 分)
  4. python正则匹配html标签_Python正则获取、过滤或者替换HTML标签的方法
  5. 计算指定年月的最后一天的自定义函数
  6. C++语言运算符重载
  7. typec扩展坞hdmi没反应_京造十合一便携扩展坞:桌面好物解决接口匮乏的大问题...
  8. 力扣-572. 另一棵树的子树
  9. python中安装decimal模块_第38天:Python decimal 模块
  10. 用python写二维码_Python用5行代码写一个自定义简单二维码
  11. 1、RabbitMQ初探
  12. python源码大全-python代码大全
  13. 佳能打印机IP1880,打印提示墨盒收集器已满的解决方法
  14. miRbase 数据库简介
  15. 宝塔面板php无法安装,宝塔面板php无法安装怎么办
  16. 手动更新windows补丁
  17. RHEL7平台下电信拨号上网配置
  18. Shim、Polyfill
  19. html做微信logo,HTML5新特性之用SVG绘制微信logo
  20. vue(slot-卡槽)

热门文章

  1. 《道德经》第三十七章
  2. 图片下载(包含了download打开图片无法下载的方法)
  3. 足不出户怎么在家赚钱,暑假在家别闲着,给自己赚点生活费吧
  4. RK1126平台项目总结
  5. excel使用反应很慢
  6. MacBook 启动/禁用翻盖自动开关机
  7. CGAL-SDF原理讲解以及使用
  8. J-LINK直接烧录.bin文件到开发板
  9. 程序员健身总动员:写代码后你胖了几斤?
  10. c语言模拟器怎么打程序,C语言初学者练手小项目——万花模拟器