1
import java.text.DateFormat;
import java.util.Date;

public class DatePlus {

    public static void main(String[] args) {
        Date now = new Date();
        //Date now1 = new Date();
        Date now2 = new Date();
        DateFormat currentDate = DateFormat.getDateInstance();

        int count1=10;
        int count2=15;

        Date addedDate1 = addDays(now2, count1);
        Date addedDate2 = addDays(addedDate1, count2);
        System.out.println(currentDate.format(addedDate1));
        System.out.println(currentDate.format(addedDate2));
    }

    public static Date addDays(Date d, int days) {
        d.setTime(d.getTime() + days * 1000 * 60 * 60 * 24);
        return d;
    }
}

addedDate1予想される出力は異なりますが、日付ステートメントとaddedDate2出力ステートメントの両方が同じ日付を出力しています。

4

4 に答える 4

7

問題は、新しいインスタンスを返すのではなくDate、提供されたインスタンスを変更することです。常に同じインスタンスを変更して印刷します。

関数を次のように変更します

public static Date addDays(Date d, int days) {
    return new Date(d.getTime() + days * 1000 * 60 * 60 * 24);
}
于 2013-07-22T11:22:21.593 に答える
3

独自のメソッドを記述する代わりに、Calenderクラスを使用できます。

public static void main(String[] args) 
    {
        Date now = new Date();
//        Date now2 = new Date();
        DateFormat currentDate = DateFormat.getDateInstance();

        int count1=10;
        int count2=15;

        Calendar c=Calendar.getInstance();
        c.setTime(now); 
        c.add(Calendar.DATE, count1); 
        Date addedDate1 = c.getTime();

        c.setTime(addedDate1);
        c.add(Calendar.DATE, count2); 
        Date addedDate2 = c.getTime();

        System.out.println(currentDate.format(addedDate1));
        System.out.println(currentDate.format(addedDate2));
    }
于 2013-07-22T11:48:02.473 に答える