总时数错误

时间:2015-12-02 18:16:57

标签: android datetime time totals

如果我在这里提出一个愚蠢的问题,我真的很抱歉,但我真的不知道要解决:(

在我的应用中,我想计算总小时数,最后显示在textView上。如果开始时间超过结束时间,我设置了不同的条件。

     int a = SplitTime(objMyCustomBaseAdapter.getFistTime());
     int b = SplitTime(objMyCustomBaseAdapter.getLastTime());
     long difference = 0;
     if (a > b) 
     {
         difference = b + 24 - a;
         Log.e("Tag",difference+"");
         int minutes = (int) ((difference / (1000 * 60)) % 60);
         int hours = (int) ((difference / (1000 * 60 * 60)) % 24);
         totalHours.setText((hours + ":" + minutes));
       }
      else
       {
          difference=b-a;
          int minutes = (int) ((difference / (1000 * 60)) % 60);
          int hours = (int) ((difference / (1000 * 60 * 60)) % 24);
          totalHours.setText((hours + ":" + minutes));
        }

     public static int SplitTime(String time) {
        try {
               String[] altSplitTime = time.split(":", 3);
               return Integer.valueOf(altSplitTime[1].trim()) * 60 + Integer.valueOf(altSplitTime[2].trim());
             }
        catch (Exception ex)
             {
            return 0;
             }

}

假设int a持有550b持有71,差异持有503。 之后,我想将其转换为hoursminutes,最后显示在textView上。但我在textView上获得0:0

这里有什么问题?我做错了吗?有人可以给我一些如何解决这个问题的建议吗?赞赏。

2 个答案:

答案 0 :(得分:0)

我认为你的演员有问题。这意味着您将分钟和小时称为int,但它们可能会返回多头,双头或花车。

尝试将小时和分钟更改为double,long或float。然后通过舍入或转换将其转换为整数。

double minutes = ((difference / (1000 * 60)) % 60);
double hours = ((difference / (1000 * 60 * 60)) % 24);
//print the values here to your log to ensure they hold a value
Log.v("TIME", "minutes: " + minutes);
Log.v("TIME", "hours: " + hours);
//convert to int here, by rounding or casting.
totalHours.setText((hours + ":" + minutes));

答案 1 :(得分:0)

将其更改为。

int minutes = (int) (difference   % 60);
         int hours = (int) (difference  /60 % 24);