判断日期是否为工作日,休息日,节假日

本文介绍了一个使用Java实现的程序,该程序通过调用外部API来判断指定日期是否为工作日、休息日或节假日。程序首先定义了目标日期,然后通过HTTP GET请求访问特定的URL,该URL会返回日期对应的节假日状态。根据返回的结果,程序将输出该日期是否为工作日的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.xyl;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.ParseException;

public class demo15 {
	public static void main(String[] args) throws ParseException {
		
        String time="20181001";
        String dateFlag = getHoliday(time);
        if ("1".equals(dateFlag) || "2".equals(dateFlag)) {
            System.err.println("今天是法定节假日");
        }else {
            System.out.println("今天是工作日");
        }
}

   /**
	 * 
	 * 方法描述:方法描述:获取节假日 访问接口,根据返回值判断当前日期是否为工作日,
	 * 返回结果:检查具体日期是否为节假日,工作日对应结果为 0, 休息日对应结果为 1, 节假日对应的结果为 2;
	 * @author xyl
	 */
	public static  String  getHoliday(String  time) {
		String dc = "http://tool.bitefu.net/jiari/?d=";
		String  httpUrl=new StringBuffer().append(dc).append(time).toString();
		BufferedReader reader = null;
        String result = null;
        StringBuffer sbf = new StringBuffer();
		try {
			URL url = new URL(httpUrl);
			HttpURLConnection connection = (HttpURLConnection)url.openConnection();
			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);
			}
			reader.close();
			result = sbf.toString();
		} catch (Exception e) {
			
		}
		return result;
	}
}

 

### Spring Boot 中实现判断当前日期工作日节假日休息日的方法 在 Spring Boot 应用程序中,可以通过以下方式来实现对当前日期的分类(即判断其属于工作日节假日还是休息日)。以下是具体的技术方案: #### 数据库设计 为了支持这一功能,可以创建一张数据库表 `holiday` 来存储所有的法定节假日和调休的工作日数据。该表结构通常包括以下几个字段: - `date`: 日期 (Date 类型) - `type`: 类型 (String 或 Enum),表示此日期是 **工作日** (`WORKING_DAY`)、**节假日** (`HOLIDAY`) 还是 **休息日** (`REST_DAY`) 这种设计方案允许灵活管理假期安排,并能够随时更新。 #### Maven 依赖配置 项目需要引入 Hutool 工具包以及其他必要的依赖项以便简化开发过程。例如,在 `pom.xml` 文件中加入如下内容用于处理时间逻辑以及 JSON 解析等功能[^2]: ```xml <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.20</version> </dependency> ``` #### 编写服务层代码 定义接口 `IWorkingHolidayService` 并提供其实现类 `WorkingHolidayServiceImpl` 。其中核心方法之一就是用来查找给定日期之后的第一个有效工作日: ```java public LocalDate nextWorkingDay(LocalDate curDate){ while(true){ curDate = curDate.plusDays(1); if(isWorkday(curDate)){ break; } } return curDate; } private boolean isWorkday(LocalDate date){ Optional<HolidayEntity> optionalHoliday = holidayRepository.findByDate(date); if(optionalHoliday.isPresent()){ String type = optionalHoliday.get().getType(); switch(type.toUpperCase(Locale.getDefault())){ case "WORKING_DAY": return true; default: return false; } }else{ int dayOfWeek = date.getDayOfWeek().getValue(); // Monday=1 ... Sunday=7 return !(dayOfWeek >=6); // Exclude Saturday and Sunday as non-working days. } } ``` 上述片段展示了如何利用循环机制找到最近的一个可用工作日,并且内部还包含了辅助函数去验证某个特定日子是不是应该被视作正常上班的时间点[^1]. 另外还需要注意的是当查询不到对应记录的时候,默认按照星期几来进行初步筛选排除周末情况. #### 测试案例演示 最后我们给出一段简单的单元测试例子展示整个流程的效果: ```java @SpringBootTest class WorkingHolidayTest { @Autowired IWorkingHolidayService workingHolidayService; @Test void testNextWorkingDay(){ LocalDate today = LocalDate.of(2023, Month.OCTOBER ,4 ); System.out.println("Today:"+today+", Next WD:"+ workingHolidayService.nextWorkingDay(today)); } } ``` 以上便是完整的基于Spring Boot框架下关于判定某天属性的小应用构建指南。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值