6

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

4

2 回答 2

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

更新:

我正在重新阅读我的答案,我很惊讶没有被否决。我的错。我在没有任何 IDE 检查的情况下编写了它。因此,对于minutesDiff 的答案应该是minutes1 和2,显然,如果其余的分钟数为负,则检查以携带小时差,使分钟数(60+minutesDiff)。如果分钟为负数,则再休息一小时到 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, ");
于 2014-06-18T23:37:42.830 回答
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 分钟!

于 2014-06-18T23:37:34.850 回答