当前位置: 首页 > 面试题库 >

计算包括假期在内的工作日

西门良才
2023-03-14
问题内容

我需要计算两个日期之间的营业日。例如:我们7月4日放假。所以如果我的日期是date1 = 07/03/2012 date2 = 07/06/2012

由于7月4日为节假日,因此,这些日期的黑白工作日应该为1。

我有一种下面的方法来计算工作日,该工作日仅计算周末,而不计算假期。还有什么方法可以计算假期吗....请帮我。

  public static int getWorkingDaysBetweenTwoDates(Date startDate, Date endDate) {  
    Calendar startCal;  
    Calendar endCal;  
    startCal = Calendar.getInstance();  
    startCal.setTime(startDate);  
    endCal = Calendar.getInstance();  
    endCal.setTime(endDate);  
    int workDays = 0;

    //Return 0 if start and end are the same  
    if (startCal.getTimeInMillis() == endCal.getTimeInMillis()) {  
        return 0;  
    }

    if (startCal.getTimeInMillis() > endCal.getTimeInMillis()) {  
        startCal.setTime(endDate);  
        endCal.setTime(startDate);  
    }

    do {  
        startCal.add(Calendar.DAY_OF_MONTH, 1);  
        if (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY   
       && startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {  
            ++workDays;  
        }  
    } while (startCal.getTimeInMillis() < endCal.getTimeInMillis());

    return workDays;  
}

问题答案:

假设您有一个包含所有假期的列表。

ArrayList<Integer> holidays = ...

只需在您的if条件中添加条件do-while

do {
          startCal.add(Calendar.DAY_OF_MONTH, 1);
          if (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY
          && startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY
          && !holidays.contains((Integer) startCal.get(Calendar.DAY_OF_YEAR))) {
              ++workDays;
          }
} while (startCal.getTimeInMillis() < endCal.getTimeInMillis());

为简单起见,我假设holiday包含的日期格式与相同Calendar.DAY_OF_YEAR



 类似资料:
  • 问题内容: 我需要计算两个日期之间的天数(工作日),不包括周末(最重要)和假期 但是,我不知道该如何在MySQL中进行操作,我发现本文计算了两个日期之间的天数,不包括周末(仅MySQL)。我无法弄清楚如何在mysql中进行功能查询,能否提供一些有关如何使用mysql查询实现此功能的信息。如果我想念什么,请告诉我。 [编辑] 问题答案: 您可能要尝试以下操作: 计算工作日数(从此处获取) 这为您提供

  • 问题内容: 如何获得两个工作日之间的工作天数,即不包括周末和节假日?假期是指法律认可的假期。由于每个国家/地区的假期不同,因此必须取决于国家/地区。 例如,由于介于两者之间的周末,应返回而不是。 我已经看过Jollyday和ObjectLab- Kit ,但是我不能让它们满足我的需要。我的意思是,他们两个都有很多有趣的方法,但是找不到类似…的东西。 问题答案: 最后是基于API 的解决方案: 致电

  • 本文向大家介绍python计算日期之间的放假日期,包括了python计算日期之间的放假日期的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python计算日期之间的放假日期,供大家参考,具体内容如下 代码如下: 打印结果如下: 中国 (4, [datetime.date(2014, 4, 20), datetime.date(2014, 12, 25), datetime.date(

  • 问题内容: 我在Spring 3.0项目中使用Joda time api计算日期。现在我有一个开始日期和结束日期,我想在这两个日期之间得到每天的周末,星期六或星期日。我该如何实现? 我看了这篇Joda的时间-两个日期之间的所有星期一。它提供了一些指导,但在如何排除两个日期方面仍然含糊。 问题答案: 我想你的问题是如何 在两个日期之间的周末,星期六或星期日除外的每一天获取。 解决方案 :

  • 问题内容: 假设我要计算项目中的代码行数。如果所有文件都在同一目录中,则可以执行: 但是,如果有子目录,则无法使用。为此,cat必须具有递归模式。我怀疑这可能是xargs的工作,但我想知道是否还有更优雅的解决方案? 问题答案: 首先,您不需要使用行数。这是一种称为猫的无用使用(UUoC)的反模式。要计算当前目录中文件的行数,请使用: 然后,该命令递归子目录: 是要从中开始搜索的顶层目录的名称 是您

  • 问题内容: 如何计算SQL Server中两个日期之间的工作日数? 星期一至星期五,它必须是T-SQL。 问题答案: 对于周一至周五的工作日,您可以使用单个SELECT进行操作,如下所示: 如果要包括假期,则必须进行一些调整…