如何获取月份列表两个日期之间的年份

如何获取月份列表两个日期之间的年份

问题描述:

我需要您帮助获得两个日期之间的字符串中的月份和年份列表。用户将以String格式输入两个日期:

I need your help in getting the list of months and the years in String between two dates. The user will enter two dates in the String format of:

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

所以结果应该是:


  • 2015年1月

  • FEB-2015

  • MAR-2015

我尝试使用以下代码,但它给了我错误的结果:

I tried using the following code but it gave me wrong results:

List<Date> dates = new ArrayList<Date>();

String str_date ="JAN-2015";
String end_date ="APR-2015";

DateFormat formatter ; 

formatter = new SimpleDateFormat("MMM-yyyy");
Date  startDate = formatter.parse(str_date); 
Date  endDate = formatter.parse(end_date);
long endTime =endDate.getTime() ; 
long curTime = startDate.getTime();
while (curTime <= endTime) {
    dates.add(new Date(curTime));
    curTime ++;
}
for(int i=0;i<dates.size();i++){
    Date lDate =(Date)dates.get(i);
    String ds = formatter.format(lDate);    
    System.out.println(ds);
}


基本的java库,并得到你要求的结果。所以你可以修改date1和date2变量。

Using the less code possible and basic java libraries and getting the result you asked for. So you can modify the date1 and date2 variables.

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Main {
    public static void main(String[] args) {
        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)) {
            // add one month to date per loop
            String date =     formater.format(beginCalendar.getTime()).toUpperCase();
            System.out.println(date);
            beginCalendar.add(Calendar.MONTH, 1);
        }
    }
}