2014-04-20 161 views
0

我想獲得給定的兩個日期和天之間的日期,例如打印日期

日期範圍20/04/2014 - 210/05/2015

這些日期之間例如,我應該在週一至週五之間打印日期。這裏是我開發的代碼:

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
Date startDate = (Date) formatter.parse("20/04/2014"); 
Date endDate = (Date) formatter.parse("10/05/2014"); 

Calendar cal = Calendar.getInstance(); 
Calendar cal1 = Calendar.getInstance(); 

cal.setTime(startDate); 
cal1.setTime(endDate); 

while (!cal.equals(cal1)) { 
    cal.add(Calendar.DATE, 1); 
    if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY|| cal1.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY) { 
     System.out.println(formatter.format(cal.getTime())); 
     System.out.println(formatter.format(cal1.getTime())); 
    } 
    //System.out.println(formatter.format(cal.getTime())); 

} 

什麼我應該看到的是:

21/04/2014(Monday)  
22/04/2014(Tuesday)  
23/04/2014(Wednesday)  
24/04/2014(Thursday)  
25/04/2014(Friday)  
28/04/2014(Monday)  
29/04/2014(Tuesday)  
30/04/2014(Wednesday)  
01/05/2014(Thursday)  
02/05/2014(Friday)  
05/05/2014(Monday)  
06/05/2014(Tuesday)  
07/05/2014(Wednesday)  
08/05/2014(Thursday)  
09/05/2014(Friday) 

,但我所得到的是:

21/04/2014  
20/05/2014  
28/04/2014  
20/05/2014  
05/05/2014  
20/05/2014  
12/05/2014  
20/05/2014  
19/05/2014  
20/05/2014 
+1

哪裏是你的代碼的一部分你希望打印當天的名字?週一或週五支票的目的是什麼?爲什麼每次迭代都要做兩個printlns? –

+0

嗨,奧利我期望在打印行中看到while循環中的代碼。目的是我只需要列出每個星期一到星期五之間的日期。就像您在預定會議時使用ms outlook一樣。 –

回答

2

的幾個問題

  • 您正在重複使用相同的DateFormat用於解析輸入數據String缺少所需日期(E)模式。創建一個單獨的SimpleDateFormat與模式dd/MM/yyyy (EEEE)來顯示輸出。
  • 如果星期一是星期一或星期五,那麼只有輸出,而在週末的一天只能輸出。
  • 顯示輸出變量cal1是不必要的

例子:

while (!calendar1.equals(calendar2)) { 
    calendar1.add(Calendar.DATE, 1); 
    if (!(calendar1.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) && 
       !calendar2.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)) { 
     System.out.println(outputFormatter.format(calendar1.getTime())); 
    } 
} 
2

您可以使用EEEE打印日期名..

formatter = new SimpleDateFormat("dd/MM/yyyy(EEEE)"); 
System.out.println(formatter.format(cal.getTime())); 
+0

嗨Anirudha感謝您的幫助,但我收到異常: 線程「主」的異常java.text.ParseException:Unparseable date:「20/04/2014」 \t at java.text.DateFormat.parse(DateFormat.java :357) \t at com.example.gui.NewClass.main(NewClass.java:64) Java結果:1 –

+0

@TugrulASLAN檢查編輯..你需要格式化你的日期不解析它 – Anirudha