2014-04-20 162 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