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

时间:2014-06-18 23:21:53

标签: java time jodatime java-time

我有一个包含特定小时的字符串。 14:34,现在我想计算当前小时ex之间的差异。 21:36-14:34 = 7小时2分钟(或类似的东西。)有人可以解释我该怎么办?

2 个答案:

答案 0 :(得分:3)

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

   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,答案应该是分钟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, ");

答案 1 :(得分:1)

我首先使用.split方法将字符串放入其两个组件(分钟和小时)然后我将这两个时间转换为分钟,将小时数重叠60,然后再添加分钟

String s = "14:34";
String[] sArr = s.split(",");
int time = Integer.parseInt(sArr[0]);
time *= 60;
int time2 = Integer.parseInt(sArr[1]);
time = time + time2;

对两个字符串执行此操作,然后从另一个字符串中减去一个字符串。你可以使用类似的东西将其转换回正常时间

int hours = 60/time;
int minutes = 60%time;

标记为正确的答案无效。它不考虑第一次是例如3:17而第二次是2:25。你最终得到1小时和-8分钟!