2

現在の日付と最後の 6 つの日付を表示するようにしました

例 :

02/11/2012
01/11/2012
31/10/2012
30/10/2012
29/10/2012
28/10/2012

私が使用したJAVAで現在の日を取得するには:

Date date = Calendar.getInstance().getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
System.out.println("current day : "+sdf.format(date));

しかし、どうすれば日数を減らすことができますか?

4

2 に答える 2

4

メソッドを使用してCalendar#add、次のように 1 日を減算できます。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Calendar cal = Calendar.getInstance();
Date date=cal.getTime();
System.out.println(sdf.format(date)); //remove line to display only the last 5 days 
for (int i=0;i<5;i++){
   cal.add(Calendar.DAY_OF_MONTH,-1);
   date=cal.getTime();
   System.out.println(sdf.format(date));
}

Jon Skeet (まもなく Mr. 500k :) ) が提案したように、私も Joda Time API がよりクリーンで適切だと思います。

DateTime dt = new DateTime();                     
for (int i = 0; i < 6; i++) {                     
    System.out.println(dt.toString("yyyy/MM/dd"));
    dt = dt.minusDays(1);                         
}                                                 
于 2012-11-02T13:02:16.780 に答える
2
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
System.out.println("current day : "+sdf.format(c.getTime()));

// decrement 1 day
c.add(Calendar.DAY_OF_MONTH, -1);

// getTime() returns a java.util.Date
System.out.println("the day before : "+sdf.format(c.getTime()));

// getTimeInMillis() returns a long, which can be used to construct a java.sql.Date
System.out.println("the day before : "+sdf.format(new java.sql.Date(c.getTimeInMillis()));

等々...

于 2012-11-02T13:02:46.680 に答える