计算两个小时的字符串之间的差异

Dar*_*ski 5 java time jodatime java-time

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

Ale*_*lex 4

这非常简单:您需要按照可以添加或减去的方式分隔字符串:

   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");
Run Code Online (Sandbox Code Playgroud)

更新:

我正在重读我的答案,令我惊讶的是没有被否决。我的错。我写的,没有任何IDE检查。因此,对于分钟差异,答案应该是分钟 1 和 2,显然,如果其余分钟为负数,则检查是否携带小时差,即分钟 (60+分钟差异)。如果分钟为负数,则再休息一小时至 hourDiff。如果小时数也变为负数,则将其设为 (24+hourDiff)。现在已经修复了。

为了快速起见,我使用自定义函数。为了可扩展性,请阅读 Nikola Despotoski 的答案并用以下内容完成它:

System.out.print(Hours.hoursBetween(dt1, dt2).getHours() % 24 + " hours, ");
System.out.println(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60 + " minutes, ");
Run Code Online (Sandbox Code Playgroud)