如何在Java中逐日将一段日期解析为String []?

时间:2012-03-01 07:16:56

标签: java

例如,输入参数为2011-01-01和2012-01-01, 我想像2011-01-01~2011-01-02,2011-01-02~2011-01-03那样一天一天地解析这个时期...... 最后,将它们存储在String?

的数组中

提前致谢。

2 个答案:

答案 0 :(得分:2)

你应该确实接受你的接受率。但基本方法是这样的:

伪代码:

Date first = "2011-01-01";
Date last = "2012-01-01";
Calendar cal = new Calendar(first);
List<Date> dates = ...;

while (first.before(last)) {
    cal.addDays(1);
    dates.add(cal);    
}

这应该很容易使用GregorianCalendar来实现,或者您可以查看joda-time,这将使这很容易......

答案 1 :(得分:2)

为了从字符串中解析日期,我建议使用SimpleDateFormat

这样您将获得Date个对象。使用Date对象创建GregorianCalendar

然后,您可以使用GregorianCalendar的add方法一次增加一天,直到达到结束日期。

这是一个代码示例:

String dateString1 = "2011-01-01";
String dateString2 = "2012-01-01";

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

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

Date startDate = dateFormat.parse(dateString1);
Date endDate = dateFormat.parse(dateString2);

GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(startDate);
while (calendar.getTime().before(endDate)) {
    dates.add(dateFormat.format(calendar.getTime()));
    calendar.add(Calendar.DAY_OF_MONTH, 1);
}

这会将您的日期放在列表中。您可以将其转换为如下数组:

String[] datesArray = dates.toArray(new String[0]);