JodaTime计算一周内的总工作小时数

时间:2010-01-21 19:31:05

标签: java jodatime

目前我有一个功能,它可以占用一天的开始时间和结束时间,并计算两者之间的差异,给我一天工作的时间。我想做的是能够让工作时间达到7天,并返回总计,同时保持显示格式(HH:mm)。

我的功能为一天的总数:

Period p = new Period(this.startTime[dayIndex], this.endTime[dayIndex]);
long hours = p.getHours();
long minutes = p.getMinutes();

String format = String.format("%%0%dd", 2);//Ensures that the minutes will always display as two digits.

return Long.toString(hours)+":"+String.format(format, minutes);

this.startTime []& this.endTime []都是DateTime对象的数组。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

你需要一些东西来保持一周的价值,并且每天给你的功能打一次。

但这意味着您需要重构,以便您的计算器方法不会格式化为字符串,而是返回一个数值,因此您可以轻松地将它们一起添加。

答案 1 :(得分:1)

另一个简单的解决方案:

这是一种分开小时和分钟的方法。
参数是:

  • 开始时间
  • 开始纪要
  • 结束时间
  • 结束分钟

首先,计算小时和分钟之间的差异:

int hours   = pEndHour - pStartHour;
int minutes = ((60 - pStartMinutes) + pEndMinutes) - 60;

然后,验证“minutes”变量的值是否为负数:

// If so, the "negative" value of minutes is our remnant to the next hour
 if (minutes < 0) {
  hours--;
  minutes = 60 + minutes ;
 }

最后,您可以按小时格式打印时间段:

String format = String.format("%%0%dd", 2);
System.out.println( "*** " + hours + " : " + minutes);

就是这样。

答案 2 :(得分:0)

解决方案我为那些感兴趣的人

结束了
    Period[] p=new Period[7];
    long hours = 0;
    long minutes =0;
    for(int x=0; x<=this.daysEntered;x++)
    {
        p[x] = new Period(this.startTime[x], this.endTime[x]);
        hours += p[x].getHours();
        minutes += p[x].getMinutes();
    }

    hours += minutes/60;
    minutes=minutes%60;

    String format = String.format("%%0%dd", 2);

    return Long.toString(hours)+":"+String.format(format, minutes);