java - 如何计算两个日期之间的总工作小时数?

标签 java algorithm validation date

我有两个日期,雇用 11/19/2013 和结束雇用 10/01/2014,都转换为总小时数,不考虑周末,但它们有不同的年份,因此输出显示:总小时数工作是-1200:

private int calculateTimeInternship(Vacancy peoplevacancy){
    int hourWorked = 0; 
    Calendar date1 = Calendar.getInstance();  
    Calendar date2 = Calendar.getInstance();    

    date1.setTime(peoplevacancy.getDthiring());  
    date2.setTime(peoplevacancy.getDtendhiring());  

    int initiation = date1.get(Calendar.DAY_OF_YEAR);  
    int end = date2.get(Calendar.DAY_OF_YEAR);  

    int amountDay = (initiation - end) + 1;  

    for (; initiation <= end; inicio++){  
        if (date1.get(Calendar.DAY_OF_WEEK) == 1   || date1.get(Calendar.DAY_OF_WEEK) == 7)  
        amountDay--;  

        date1.add(Calendar.DATE, 1);  
    }

    hourWorked = amountDay * 4 //4 hour per day;
    return hourWorked ;
}

最佳答案

Joda可以为您提供帮助,但由于其许可证,我永远无法使用它。

如果像我一样,Joda不适合你,你可以按如下方式解决这个问题:

initialize endDate object
initialize startDate object
initialize weeksBetween as 
    milliseconds between end&start/milliseconds per day, divided by seven (integer floor). 
    //may need to normalize dates and set them to be both midnight or noon or some common time
initialize daysBetween = weeksBetween*5 // in any continuous 7 days, 5 are weekdays.
initialize curDay=startDate + weeksBetween*7 days

while(curDay is not endDate)
   add a day to curDay
   if(curDay is not weekend)
      daysBetween++
output daysBetween* 4

您可以通过将日历转换为 Date 来获取它们之间的毫秒数(Calendar有这样的方法可以做到这一点)

关于java - 如何计算两个日期之间的总工作小时数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19872023/

相关文章:

java - 如何将第三方 jar 文件添加到我的 android 应用程序 jar 文件中?

javascript - 禁用一个元素,直到其他输入字段有效

Javascript 运行时类型检查引擎

javascript - typescript : determine if 2 lists have at least one common element

validation - 如何使用条件数据验证来检查用户是否输入了公式或值?

java - 您如何在 Bootstrap 文件中正确设置不同的 Spring 配置文件(让 Spring Boot 以不同的云配置服务器为目标)?

java - 在没有 gps 的情况下获取天气信息

java - 什么是NullPointerException,我该如何解决?

匹配数据的算法

java - 64 位无符号哈希函数