我有一个字符串,其中包含某些小时前。 14:34,现在我想计算当前小时之间的时差。 21:36-14:34 = 7小时2分钟(或类似的时间)。有人可以向我解释我该怎么做?

最佳答案

这很简单:您需要用可以添加或减去的术语来分隔字符串:

   String timeString1="12:34";
   String timeString2="06:31";

   String[] fractions1=timeString1.split(":");
   String[] fractions2=timeString2.split(":");
   Integer hours1=Integer.parseInt(fractions1[0]);
   Integer hours2=Integer.parseInt(fractions2[0]);
   Integer minutes1=Integer.parseInt(fractions1[1]);
   Integer minutes2=Integer.parseInt(fractions2[1]);
   int hourDiff=hours1-hours2;
   int minutesDiff=minutes1-minutes2;
   if (minutesDiff < 0) {
       minutesDiff = 60 + minutesDiff;
       hourDiff--;
   }
   if (hourDiff < 0) {
       hourDiff = 24 + hourDiff ;
   }
   System.out.println("There are " + hourDiff + " and " + minutesDiff + " of difference");

更新:

我正在重新阅读我的答案,但我感到惊讶的是我没有被否决。我的错。我写它时没有任何IDE检查。因此,答案应该是minutesDiff的minutes 1和2,并且如果剩余的分钟数为负,则答案应该是小时差,即分钟数(60 + minutesDiff)。如果分钟是负数,则将小时休息一小时。如果小时数也变为负数,则设为(24 + hourDiff)。现在是固定的。

为了牢固起见,我使用了自定义函数。为了实现可伸缩性,请阅读Nikola Despotoski的答案,并以此完成它:
System.out.print(Hours.hoursBetween(dt1, dt2).getHours() % 24 + " hours, ");
System.out.println(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60 + " minutes, ");

10-04 22:58
查看更多