• 大小: 5KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: Java
  • 标签: java  DateTime  

资源简介

JAVA时间工具类(计算法定工作日工时):计算某个日期加上几个工作日后的一个工作日期(除周末和法定节假日),计算某个日期后一天的工作日期(除周末和法定节假日),计算两个日期的真实工作日(除周末和法定节假日),判断一个日期是否是夏季时间,计算两个时间差(小时),生成一个上下班时间,因为夏季冬季不一样,一个日历是不是法定节假日,一个日历是不是法定要工作的周末,计算下一个流程开始时间=结束时间+1hour 如果不再工作时间内则从第二天早上开始。计算某月第一个工作日,计算某月最后一个工作日。

资源截图

代码片段和文件信息

package cn.ffcs.demand.util;

import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.ResourceBundle;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.time.DateUtils;

/**
 * 本类是一个工作日计算类
 * 本类负责:1计算某个时间点加上相应的工作日后就会生成一个非假期的工作日期
 *       2计算两个日期的具体工作日
 *       3计算工作的小时数(排除双休节假日,涵盖了周末上班情况)
 * @author   刘强
 * @version  Ver 1.0 2018-06-29 改订  
 *
 */

public class WorkDayPlus {

/**
 * 此方法计算某个日期加上几个工作日后的一个工作日期(除周末)
 * @param  date(起始日期)  day(要添加的工作天数)
 * @return incomeDate(去除周末后的日期)
 */
public Date getIncomeDate(Date dateint days) throws NullPointerException{
    Date incomeDate = date;
    for(int i = 1 ; i <= days ; i++){
     incomeDate = getIncomeDate(incomeDate);
    }
    return incomeDate;
}

/**
 * 此方法计算某个日期加上几个工作日后的一个工作日期(除周末和法定节假日)
 * @param  date(起始日期)  day(要添加的工作天数)
 * @return incomeDate(去除周末后的日期)
 */
public Date getIncomeDatePlus(Date dateint days) throws NullPointerException{
    Date incomeDate = date;
    for(int i = 1 ; i <= days ; i++){
     incomeDate = getIncomeDatePlus(incomeDate);
    }

    return incomeDate;
}

/**
 * 此方法计算某个日期后一天的工作日期(除周末)
 * @param  date(起始日期)
 * @return incomeDate(去除周末后的日期)
 */
private Date getIncomeDate(Date date) throws NullPointerException{
    if (null == date){
        throw new NullPointerException(“the date is null or empty!“);
    }
 
    //对日期的操作我们需要使用 Calendar 对象
    Calendar calendar = new GregorianCalendar();
    calendar.setTime(date);
 
    //+1天
    calendar.add(Calendar.DAY_OF_MONTH +1);
 
    //判断是星期几
    int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
 
    Date incomeDate = calendar.getTime();
    if (dayOfWeek == 1 || dayOfWeek == 7){
        //递归
        return getIncomeDate(incomeDate);
    }
    return incomeDate;
}

/**
 * 此方法计算某个日期后一天的工作日期(除周末和法定节假日)
 * @param  date(起始日期)
 * @return incomeDate(去除周末后的日期)
 */
public Date getIncomeDatePlus(Date date) throws NullPointerException{
    if (null == date){
        throw new NullPointerException(“the date is null or empty!“);
    }
 
    //对日期的操作我们需要使用 Calendar 对象
    Calendar calendar = new GregorianCalendar();
    calendar.setTime(date);
 
    //+1天
    calendar.add(Calendar.DAY_OF_MONTH +1);
 
    Date incomeDate = calendar.getTime();
 
    if (isWeekend(calendar) || isHoliday(calendar)){
        //递归
        return getIncomeDatePlus(incomeDate);
    }
    return incomeDate;
}
/**
 * 此方法计算两个日期的真实工作日(除周末和法定节假日)
 * @param  startTime(起始日期)endTime(结束时间)
 * @return workdays(去除周末和法定节假日后的日期)
 */
public int getWorkDays(Date startTimeDate endTime){
return getDatesBetweenTwoDate(startTimeendTime).size();
}
/**
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-08-08 08:52  时间工具\
     文件       18845  2018-08-05 16:43  时间工具\WorkDayPlus.java
     文件         443  2018-07-27 15:59  时间工具\WorkDayPlusConfig.properties

评论

共有 条评论