2 つの日付間の日数を計算することは承知しています。
しかし、以下のコードで計算がどのように行われるかを理解できません。特に、以下で強調表示されているもの。
return (int)( (d2.getTime() - d1.getTime()) / (
1000 *
60 *
60 *
24));
この背後にあるロジックを教えてください。
2 つの日付間の日数を計算することは承知しています。
しかし、以下のコードで計算がどのように行われるかを理解できません。特に、以下で強調表示されているもの。
return (int)( (d2.getTime() - d1.getTime()) / (
1000 *
60 *
60 *
24));
この背後にあるロジックを教えてください。
リンクした質問には、Jon Skeet からの回答があります。あなたはそれを考慮する必要があります。コードでは、2 つの日付の差がMillisecondで返されます。1 日に換算すると、次のように計算されます。
(1000 * 60 * 60 * 24));
millisecond seconds minutes hours in day ==> One day
これはかなりまっすぐです。
(d2.getTime()-d1.getTime())は、差異を示しません。2つの日付の間のミリ秒。
1000 * 60 * 60 * 24は、1日のミリ秒数を示します。
(int)への明示的なキャストは、正確な日数を示します。
これ以上のものはありません。
時間はミリ秒で表されるため、24 * 60 * 60 * 1000になります。
24 * there are 24 hours in a day
60 * there are 60 minutes in an hour
60 * there are 60 seconds in a minute
1000 * there are 1000 milliseconds in a second
DudegetTime()
メソッドは、ミリ秒単位で時間を提供します。したがって、差はミリ秒になるだけで、それを1000で割って秒に変換し、次に60で割って分に変換し、次に時間に変換してから日に変換しようとします(1日は24時間です)。
私はあなたがそれを得る願っています。
メソッド getTime() は、この Date オブジェクトによって表される 1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数を返します。
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Date.html
そして、これがあなたにとって不明確かもしれない唯一のことなので、残りを説明する必要さえないと思います;)