2015-04-28 35 views
2

我需要您的幫助來獲取迄今爲止的值,同時檢索兩個日期之間的月份列表。如何在使用java.util.Date.before之前顯示日期

在我的代碼我使用:

String date1 = "JAN-2015"; 
String date2 = "APR-2015"; 

DateFormat formater = new SimpleDateFormat("MMM-yyyy"); 

Calendar beginCalendar = Calendar.getInstance(); 
Calendar finishCalendar = Calendar.getInstance(); 
try { 
    beginCalendar.setTime(formater.parse(date1)); 
    finishCalendar.setTime(formater.parse(date2)); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
while (beginCalendar.before(finishCalendar)) { 
String date =  formater.format(beginCalendar.getTime()).toUpperCase(); 
beginCalendar.add(Calendar.MONTH, 1); 
    } 

上面的代碼會顯示在列表:

Jan-2015 
Feb-2015 
Mar-2015 

那麼,怎樣才能我也加入到這是Apr-2015它日期,因爲它是執行.before()

回答

0

您可以使用compareTo()方法。

while (beginCalendar.compareTo(finishCalendar) <= 0) { 
    String date = formater.format(beginCalendar.getTime()).toUpperCase(); 
    beginCalendar.add(Calendar.MONTH, 1); 
} 

beginCalendar.compareTo(finishCalendar)的值是0時beginCalendar等於finishCalendar且小於0時beginCalendarfinishCalendar之前。

如果您只想使用before()方法,則必須在while循環的外部添加一個日期(第一個或最後一個日期)。

+0

但OP希望'。之前()'方法 – Blip

+0

由於它的工作 – 99maas

0

試試這個

String date = formater.format(beginCalendar.getTime()).toUpperCase(); 
//Add this line before the loop So that you get the first data. 
while (beginCalendar.before(finishCalendar)) { 
    beginCalendar.add(Calendar.MONTH, 1); // increment before getting data. 
    String date = formater.format(beginCalendar.getTime()).toUpperCase(); 
} 

您在循環中完成的主要更改是我們在收集字符串日期之前遞增日曆。這是爲了適應你的情況。當beginCalendar變量爲MAR-2015時,它轉到檢查環路的條件,導致beginCalendar.before(finishCalendar)返回true

+0

它跳過一月至2015年 – 99maas

+0

@ 99maas你加我的第一線,是有打印'JAN-2015' – Blip

相關問題