JAVA判断当前时间是否为节假日、周末、工作日

需求

有这么个需求,需要判断传的这个日期是否为节假日,周末,工作日,然后做剩下的操作。

话不多说,上代码

1.首先需要拿到节假日api

节假日API地址

2.拿到自己适用接口,如下:

参数:
1》year:格式“yyyy”,查询这一年的节假日

https://timor.tech/api/holiday/year

返回数据示例:

{"code": 0,"holiday": {"01-01": {"holiday": true,"name": "元旦","wage": 3,"date": "2023-01-01","rest": 1},"01-02": {"holiday": true,"name": "元旦","wage": 2,"date": "2023-01-02","rest": 1},"01-21": {"holiday": true,"name": "除夕","wage": 3,"date": "2023-01-21","rest": 2},..........

截图如下

3.拿到项目中,编写成一个HolidayUtil 工具类,代码如下:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.bh4q.dict.util.DateUtil;
import org.apache.commons.lang.StringUtils;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;/*** @Author xiaoliu* @Date 2023/7/6 14:44* @Version 1.0* 判断今天是工作日/周末/节假日 工具类* //0 上班 1周末 2节假日*/
public class HolidayUtil {static Map<String,List<String>> holiday =new HashMap<>();//假期static Map<String,List<String>> extraWorkDay =new HashMap<>();//调休日//判断是否为节假日/**** @param time 日期参数 格式‘yyyy-MM-dd’,不传参则默认当前日期* @return*/public static String isWorkingDay(String time) throws ParseException {Date parse = null;//为空则返回当前时间if (StringUtils.isNotBlank(time)){SimpleDateFormat getYearFormat = new SimpleDateFormat("yyyy-MM-dd");parse = getYearFormat.parse(time);}else {parse = new Date();}String newDate  = new SimpleDateFormat("yyyy").format(parse);//判断key是否有参数年份if(!holiday.containsKey(newDate)){getYearHoliday(newDate);}//得到日期是星期几Date date = DateUtil.formatStringToDate(time, false);Calendar calendar = Calendar.getInstance();calendar.setTime(date);int weekday = DateUtil.getDayOfWeek(calendar);//是否节假日if(holiday.get(newDate).contains(time)){return "2";}else if(extraWorkDay.get(newDate).contains(time)){//是否为调休return "0";}else if(weekday == Calendar.SATURDAY || weekday == Calendar.FRIDAY){//是否为周末return "1";}else{return "0";}}/**** @param date 日期参数 格式‘yyyy’,不传参则默认当前日期* @return*/public static String getYearHoliday(String date) throws ParseException {//获取免费api地址String httpUrl="https://timor.tech/api/holiday/year/"+date;BufferedReader reader = null;String result = null;StringBuffer sbf = new StringBuffer();try {URL url = new URL(httpUrl);URLConnection connection = url.openConnection();//connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");connection.setRequestProperty("User-Agent", "Mozilla/4.76");//使用Get方式请求数据//connection.setRequestMethod("GET");//connection.connect();InputStream is = connection.getInputStream();reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));String strRead = null;while ((strRead = reader.readLine()) != null) {sbf.append(strRead);sbf.append("\r\n");}reader.close();//字符串转jsonJSONObject json = JSON.parseObject(sbf.toString());//根据holiday字段获取jsonObject内容JSONObject holiday = json.getJSONObject("holiday");List hoList = new ArrayList<>();List extraList = new ArrayList<>();for (Map.Entry<String, Object> entry : holiday.entrySet()) {String value = entry.getValue().toString();JSONObject jsonObject = JSONObject.parseObject(value);String hoBool = jsonObject.getString("holiday");String extra = jsonObject.getString("date");//判断不是假期后调休的班if(hoBool.equals("true")){hoList.add(extra);HolidayUtil.holiday.put(date,hoList);}else {extraList.add(extra);HolidayUtil.extraWorkDay.put(date,extraList);}}} catch (Exception e) {e.printStackTrace();}return result;}
}

4.调用工具类方法

  public static void main(String[] args) {String date = "2023-07-12";String yearHoliday = HolidayUtil.isWorkingDay(date);System.out.println(yearHoliday);}

打印结果:0


搞定收工

希望可以帮助到您

~打工人冲啊~

.

JAVA判断当前时间是否为节假日、周末、工作日,简单有效!相关推荐

  1. java 判断当前时间是否为节假日_最近公司招人,研发组商量了下,暂时定下这么多java面试题!...

    一.List相关面试题 List是一个集合接口,分为AarrayList和LinkedList两个实现方式 ArrayList:底层实现就是数组,且ArrayList实现了RandomAccess,表 ...

  2. java 判断当前时间是否为节假日_浅谈Java8日期时间处理

    各位小伙伴们,我们又见面了,今天峰哥跟大家分享一下java8的全新日期时间处理API.在Java8之前,我们使用的日期时间是: java.util.Datejava.util.Calendar jav ...

  3. JS获取当前时间是否为节假日,周末

    var now = new Date().getTime()/1000; //获取当前时间戳,精确到秒,示例:1570463999var time_10_01 = get_time("201 ...

  4. JAVA判断当前时间在时间范围内

    我们在日常开发的时候肯定有围绕时间选择的一些功能, 今天给大家分享一个java如何判断当前时间是否在所选择时间范围内的一个小demo public static void main(String[] ...

  5. java判断当前时间距离第二天凌晨的秒数

    /*** 判断当前时间距离第二天凌晨的秒数** @return 返回值单位为[s:秒]*/public Long getSecondsNextEarlyMorning() {Calendar cal ...

  6. java判断那个时间更晚_如何用Java判断日期是早于还是晚于另一个日期

    如何用Java判断日期是早于还是晚于另一个日期 另一个工作中常见的操作就是如何判断给定的一个日期是大于某天还是小于某天?在Java 8中,LocalDate类有两类方法isBefore()和isAft ...

  7. java判断当前时间在某个时间段内

    public class test4 {public static void main(String[] args) {SimpleDateFormat df = new SimpleDateForm ...

  8. Java——判断输入时间数据是否有效

    文章目录 思想 实现 思想 根据SimpleDateFormat指定时间转换的格式,如果出现转换异常,则将异常信息进行捕获,返回判断的boolean值. 实现 编写一个静态的方法,实现输入时间数据的有 ...

  9. java判断当前时间是否在对应时间段内

    /*** @param beginTime 开始时间* @param endTime 结束时间* @return true在时间段内,false不在时间段内*/ public static boole ...

最新文章

  1. 重磅直播|多模态融合SLAM技术分享!
  2. 阿里 RocketMQ 如何让双十一峰值之下 0 故障?
  3. MQTT协议笔记之mqtt.io项目TCP协议支持
  4. 网络安全01-网络安全入坑
  5. Codeforces Global Round 14 F. Phoenix and Earthquake 思维 + 并查集
  6. 蚁群优化算法 ACO
  7. Qt创建任务栏进度条
  8. webpack-dev-server
  9. oracle 生成随机姓名_Oracle 生成随机数,随机字符串
  10. Ubuntu16.04下Nvidia+Cuda8.0+Dynet安装教程
  11. anguarjs 图片预览_第865期【软件】最新图片排版神器 轻松打造完美排版!
  12. 这个AI批量作画每小时九张,与毕加索同台竞技,还真有人买
  13. 利用EXCEL计算标准差。
  14. C++ 万年历 查找年、月、日、星期数以及节日等信息
  15. 形容词记忆(二):ful,ous,ant后缀常用词
  16. 交换机与路由器技术-08-路由器上配置DHCP
  17. 计算机启动灯1212,惠普笔记本电脑型号F6C27PA#AB2wifi开关一直亮红灯开不起怎么办?...
  18. 个人开发者的白piao云服务器
  19. linux安装chrome浏览器
  20. 服务器性能主要指标,性能测试中服务器关键性能指标浅析

热门文章

  1. Postman发post请求读取不到文件的情况
  2. 【MySQL学习笔记】系列二:MySQL环境搭建(卸载、下载、安装、配置、登录)
  3. ODrive0.5.5源码分析(4) 编码器补偿校准(encoder_offset_calibration)
  4. android台湾安卓中文网,安卓中文网
  5. windows系统实现自动登录
  6. linux挂载光盘的命令,Linux下挂载光驱的方法
  7. HTML中display属性
  8. 将项目部署到Linux系统上
  9. XmlHttp - Ajax技术
  10. Linux系统驱动之硬件_IMX6ULL的LCD控制器