1

現在の日付と過去 5 日間の日付を表示したい

2013/04/24
2013/04/23
2013/04/22
2013/04/21
2013/04/20

私は以下のようなコードを持っています..

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    Calendar cal = Calendar.getInstance();
    Date date=cal.getTime();
for (int i=0;i<5;i++){
                   cal.add(Calendar.DAY_OF_MONTH,-1);
                   date=cal.getTime();
                   String reportDate = sdf.format(date);
                   System.out.println("reportDate :" + reportDate);
}

ここで私は以下のような出力を得ています..

reportDate :2013/04/23
reportDate :2013/04/22
reportDate :2013/04/21
reportDate :2013/04/20
reportDate :2013/04/19

しかし、現在の日付を含む過去 5 日間の日付が必要です...誰か助けてくれますか?

4

3 に答える 3

1

これを試して!!

public static void getDate(){
    GregorianCalendar cal = new GregorianCalendar();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");

    int day = cal.get(GregorianCalendar.DAY_OF_MONTH);


        for(int i=day; i > (day-5); i--){
            cal.set(GregorianCalendar.DAY_OF_MONTH, i);

            Date date = cal.getTime();
            System.out.println(sdf.format(date));   
        }

}

v2.0

public static void getDate1(){
    GregorianCalendar cal = new GregorianCalendar();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");

    cal.set(2013, 0, 1); // this is extreme case!!!

    int day = cal.get(GregorianCalendar.DAY_OF_MONTH);
    int month = cal.get(GregorianCalendar.MONTH);
    int year = cal.get(GregorianCalendar.YEAR);

        for(int i=day; i > (day-5); i--){
            cal.set(year, month, i);

            Date date = cal.getTime();
            System.out.println(sdf.format(date));   
        }

}

これは出力です:

2013/01/01 2012/12/31 2012/12/30 2012/12/29 2012/12/28

于 2013-04-24T08:45:45.013 に答える
0

i各反復での値を減算します。そして、反復ごとiに増加します。おそらく関係なく1減算したいだけです。1i

cal.add(Calendar.DAY_OF_MONTH, -1);

編集

または、より良い解決策かもしれません

cal.roll(Calendar.DAY_OF_MONTH, false);
于 2013-04-24T08:24:12.090 に答える
0

問題は次の行です。

cal.add(Calendar.DAY_OF_MONTH,-i);

具体的にはその-i部分。最初の反復でi0、何日も差し引かないようにします。次に 1 日引くと 23 日になります。次に、2 日を引くと 21 日というようになります。

最初の日付を出力してから、各反復でそれぞれ 1 日を減算して 4 回ループすると、次のようになります。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
String reportDate = sdf.format(date);
System.out.println("reportDate :" + reportDate);
for (int i = 0; i < 4; i++) {
    cal.add(Calendar.DAY_OF_MONTH, -1);
    date = cal.getTime();
    reportDate = sdf.format(date);
    System.out.println("reportDate :" + reportDate);
}
于 2013-04-24T08:24:28.210 に答える