1

2つの日付の差を、たとえば10進表記で日数に変換しようとしています。たとえば、これを実行している時点では、

Date mostRecentDate = dates[0];
Date previousDate = dates[1];

long mostRecentTime = mostRecentDate.getTime();
long previousTime = previousDate.getTime(); 

long diffInDays = (mostRecentTime - previousTime ) / (1000 * 60 * 60 * 24);

これは常に全日数になりますが、2つの日付の差が2日半であれば、2.5を返すことができ、差が6時間であれば、0.25を返すことができると期待していました。

ありがとう !

4

2 に答える 2

3

DataType が問題です。ダブルで使えます。

            Date[] dates = new Date[2];
        dates[1] = new Date(System.currentTimeMillis()-12*1000*60*60);
        dates[0] = new Date(System.currentTimeMillis());
        Date mostRecentDate = dates[0];
        Date previousDate = dates[1];

        double mostRecentTime = mostRecentDate.getTime();
        double previousTime = previousDate.getTime(); 

        double diffInDays = (mostRecentTime - previousTime ) / (1000 * 60 * 60 * 24);
于 2012-09-17T10:17:18.990 に答える
2

実数の差を得るには、 long の代わりに double を使用する必要があります。

double diffInDays = (mostRecentTime - previousTime ) / (1000 * 60 * 60 * 24);

long 型は整数です。答えが何であれ、値を除算すると、整数にキャストされ、小数点が削除されます。

于 2012-09-17T10:16:26.337 に答える