4

これが私のコードフラグメントです。特定の日付から日数を引く必要がありますが、期待した結果が得られません:

public class TestingDates {

    public static void main(String[] args) {
        Date toDate=new Date();
        Date fromDate=new Date();
        for (int i = 0; i < 30; i++) {
            fromDate.setTime(toDate.getTime() - i * 24 * 60 * 60 * 1000);
            System.out.println(fromDate);   
        }
    }
}

そして、私はこの結果と混同しています

ここに出力があります

Fri Sep 13 12:24:50 IST 2013
Thu Sep 12 12:24:50 IST 2013
Wed Sep 11 12:24:50 IST 2013
Tue Sep 10 12:24:50 IST 2013
Mon Sep 09 12:24:50 IST 2013
Sun Sep 08 12:24:50 IST 2013
Sat Sep 07 12:24:50 IST 2013
Fri Sep 06 12:24:50 IST 2013
Thu Sep 05 12:24:50 IST 2013
Wed Sep 04 12:24:50 IST 2013
Tue Sep 03 12:24:50 IST 2013
Mon Sep 02 12:24:50 IST 2013
Sun Sep 01 12:24:50 IST 2013
Sat Aug 31 12:24:50 IST 2013
Fri Aug 30 12:24:50 IST 2013
Thu Aug 29 12:24:50 IST 2013
Wed Aug 28 12:24:50 IST 2013
Tue Aug 27 12:24:50 IST 2013
Mon Aug 26 12:24:50 IST 2013
Sun Aug 25 12:24:50 IST 2013
Sat Aug 24 12:24:50 IST 2013
Fri Aug 23 12:24:50 IST 2013
Thu Aug 22 12:24:50 IST 2013
Wed Aug 21 12:24:50 IST 2013
Tue Aug 20 12:24:50 IST 2013
Tue Oct 08 05:27:38 IST 2013
Mon Oct 07 05:27:38 IST 2013
Sun Oct 06 05:27:38 IST 2013
Sat Oct 05 05:27:38 IST 2013
Fri Oct 04 05:27:38 IST 2013

この問題を解決するのを手伝ってください

4

4 に答える 4

9

整数オーバーフローに直面しています。int 変数の最大値i2^31-1です。

iオーバーフローを避けるため、変数には long 型を使用してください。

    for (long i = 0; i < 30; i++) {
        fromDate.setTime(toDate.getTime() - i * 24 * 60 * 60 * 1000);
        System.out.println(fromDate);   
    }
于 2013-09-13T07:32:48.513 に答える