2013-04-24 55 views
0

日期我想顯示當前的日期和最近5天日期顯示curentdate和最後5天的java

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 

但我想要包括當前日期的最後五天的日期......任何一個幫助嗎?

回答

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)); 
     } 

} 

2.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

+0

非常感謝...它給出我的確切輸出...再次感謝.. – 2013-04-24 08:53:35

+0

DAY_OF_MONTH <5時它將如何行動? – NilsH 2013-04-24 09:47:12

+0

當DAY_OF_MOUNTH <5時,GregorianCalendar類自動遞減MOUNTH,並且DAY_OF_MOUNTH將在此mounth的最後一天開始!托盤它befor談話! – giovybus 2013-04-24 10:47:28

0

您在每次迭代中減去值i。並且i每次迭代增加1。無論i如何,您可能只想減去1

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

編輯

或者甚至一個更好的解決方案

cal.roll(Calendar.DAY_OF_MONTH, false); 
+0

oh..thankü非常......如果我想那麼當前和過去五天日期重量我應該在這裏做什麼.. – 2013-04-24 08:28:58

+0

你可以得到循環外的今天日期。 – NilsH 2013-04-24 08:35:34

0

的問題是這一行:

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

具體的-i部分。在第一次迭代中,i0,所以你不會減去任何日子。在下一次你減去一天,所以你得到第23。接下來,你減去兩天,所以你得到第二十一,等等。

要打印出來的初始日期,然後循環四次減一每天每隻每次迭代,所以:

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); 
} 
+0

嘿它沒有給當前的日期...使用上面的代碼我會得到最後4天的日期..我想要當前日期+過去4天我想要的日期... – 2013-04-24 08:34:22

+2

@hemachandra它應該打印出循環前的當前日期;這絕對是給我今天和前四天的日子。 – 2013-04-24 08:35:35