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 までさらに 1 時間休みます。時間も負になる場合は、(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 メソッドを使用して文字列を 2 つのコンポーネント (分と時間) に変換し、時間を 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;

正しいとラベル付けされた答えは機能しません。たとえば、1 回目が 3:17 で 2 回目が 2:25 の場合は考慮されません。1 時間 8 分で終わります。

于 2014-06-18T23:37:34.850 に答える