欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

java计算两个日期之前的天数实例(排除节假日和周末)

时间:2021-07-15 09:30:56|栏目:JAVA代码|点击:

如题所说,计算两个日期之前的天数,排除节假日和周末。这里天数的类型为double,因为该功能实现的是请假天数的计算,有请一上午假的为0.5天。

不够很坑的是每个日期都要查询数据库,感觉很浪费时间。

原则:

  1.节假日存放在数据库中

实现步骤:

  1.循环每个日期

  2.判断每个日期是否为节假日或者为周末

  3.若不是节假日和周末,天数+1

代码:

public double calLeaveDays(Date startTime,Date endTime){
 double leaveDays = 0;
//从startTime开始循环,若该日期不是节假日或者不是周六日则请假天数+1
Date flag = startTime;//设置循环开始日期
Calendar cal = Calendar.getInstance();
  //循环遍历每个日期
while(flag.compareTo(endTime)!=1){
 cal.setTime(flag);
//判断是否为周六日
 int week = cal.get(Calendar.DAY_OF_WEEK) - 1;
 if(week == 0 || week == 6){//0为周日,6为周六
  //跳出循环进入下一个日期
  cal.add(Calendar.DAY_OF_MONTH, +1);
  flag = cal.getTime();
  continue;
 }
  //判断是否为节假日
  try{
   //从数据库查找该日期是否在节假日中
   /*这里为数据库操作*/
      /*传入该日期flag,使用sql语句判断flag是否between节假日开始日期and节假日结束日期*/
      /*count为从数据库查出的行数*/
   if (count > 0){
    //跳出循环进入下一个日期
         cal.add(Calendar.DAY_OF_MONTH, +1);
         flag = cal.getTime();
    continue;
        }
    }catch (Exception e){
   e.printStackTrace();
  }
  //不是节假日或者周末,天数+1
 leaveDays = leaveDays + 1;
  //日期往后加一天
  cal.add(Calendar.DAY_OF_MONTH, +1);
  flag = cal.getTime();
 }
 return leaveDays;
}

上一篇:SpringMVC图片文件跨服务器上传

栏    目:JAVA代码

下一篇:浅谈JAVA 异常对于性能的影响

本文标题:java计算两个日期之前的天数实例(排除节假日和周末)

本文地址:http://www.codeinn.net/misctech/157557.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有