【问题标题】:JodaTime Calculate total hours worked in a weekJodaTime 计算一周内的总工作时间
【发布时间】:2010-01-21 19:31:05
【问题描述】:

目前我有一个函数可以获取一天的开始时间和结束时间,并计算两者之间的差异,给我一天的工作时间。我想做的是能够获得 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 对象的数组。

有什么建议吗?

【问题讨论】:

    标签: java jodatime


    【解决方案1】:

    您需要一些东西来保存一周的时间,并且每天调用一次您的函数。

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

    【讨论】:

      【解决方案2】:

      另一个简单的解决方案:

      这是一个单独接收小时和分钟的方法。
      参数是:

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

      首先,分别计算小时和分钟的差:

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

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

      // 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);
      

      就是这样。

      【讨论】:

        【解决方案3】:

        我为感兴趣的人提供的解决方案

            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);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-09
          相关资源
          最近更新 更多