Java 如何获取相对于正式营业时间的时差
我必须显示员工相对于正式工作时间的总工作时间。 若任务已启动,则在数据库中输入开始时间和结束时间 例如:Java 如何获取相对于正式营业时间的时差,java,Java,我必须显示员工相对于正式工作时间的总工作时间。 若任务已启动,则在数据库中输入开始时间和结束时间 例如: start time= `2013-10-18 16:06:16.840` end time=`2013-10-22 16:09:09.760` 工作时间可根据组织进行配置 工作时间=7.45(7小时45分钟)=1天 如果有人工作时间比工作时间多,则考虑额外工作,并考虑加班时间。 我需要输出根据用户工作了一天。一天的产量 7.45 hour then 1 days 7.50 hour
start time= `2013-10-18 16:06:16.840`
end time=`2013-10-22 16:09:09.760`
工作时间可根据组织进行配置
工作时间=7.45(7小时45分钟)=1天
如果有人工作时间比工作时间多,则考虑额外工作,并考虑加班时间。
我需要输出根据用户工作了一天。一天的产量
7.45 hour then 1 days
7.50 hour then 1 days and 5 minute
14.50 hour then 1 days, 7 hour and 5 minutes
我已经做了下面的编码。它并没有给我期望的那样准确的结果
我所做的:
1) take difference of two days
2) instead of using 24 hour, I used business hour.
代码:
public static long[] getTimeDifference(Date d1,Date d2,int holiday,String businessHour)
{
long hour=0;
if(businessHour.indexOf(".")!=-1)
{
hour=Long.valueOf(businessHour.substring(0,businessHour.indexOf(".")));///check for hour
}
else
{
hour=Long.valueOf(businessHour);
}
long[] time=new long[3];
long diff = d2.getTime() - d1.getTime();
//double diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = (diff / (60 * 60 * 1000) % hour);
long diffDays = (diff / (hour * 60 * 60 * 1000));
diffDays=diffDays-holiday;
time[0]=diffDays;
time[1]=diffHours;
time[2]=diffMinutes;
return time;
}
输出:
11天:05小时:02分钟
我还没有包含分钟逻辑,如何实现?我不知道。我对此感到困惑。要获取两个日期之间经过的天数、分钟和秒数,可以执行以下操作:
long hour = 0;
if (businessHour.indexOf(".") != -1) {
hour = Long.valueOf(businessHour.substring(0,
businessHour.indexOf(".")));// /check for hour
} else {
hour = Long.valueOf(businessHour);
}
long[] time = new long[3];
long diff = d2.getTime() - d1.getTime();
// double diffSeconds = diff / 1000 % 60;
double diffDays = (diff / (24 * 60 * 60 * 1000));
double diffHours = (diff / (60 * 60 * 1000)) - diffDays*24;
double diffMinutes = diff / (60 * 1000) - (diffDays*24 + diffHours) * 60;
time[0] = diffDays;
time[1] = diffHours;
time[2] = diffMinutes;
但是我不知道它是否是您想要的。为什么要使用Long
作为您工作时间的数据类型?这样,您就失去了输入字符串的小数部分。如果您只有他在周五输入的时间和他今天离开的时间,您就无法计算他每天工作的小时数。@user2310289 for weekend我有不同的逻辑。@jeroen_de_schutter,正如我刚才提到的。还有一分钟,我还没有写任何代码。不要忘记对时区、夏令时、作为更正添加的额外秒数等进行一些处理。使用java.util.Date或calendar类时要小心。Java8中引入的新DateTime API比JDK中当前的日期API好得多