如何将字符串转换为日期Java

时间:2012-05-23 09:57:55

标签: java string list parsing date

我目前有一个ArrayList填充了2012-06-19格式的日期,我正在尝试将它们全部添加到Date s的数组中。

这是我失败的代码部分,

    listIterator = dateValues.listIterator();

    Date [] dates = new Date[dateValues.size()];
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    int i = 0;
    try{
        while(listIterator.hasNext())
        {
            //System.out.println(listIterator.next().toString());
            dates[i] =  dateFormat.parse(listIterator.next().toString());
            i++;

        }

        for(i = 0; i < dates.length;i++)
        {
            System.out.println(dates[i]);
        }
    }
    catch(Exception e){e.printStackTrace()};
}

该行

//System.out.println(listIterator.next().toString());

将打印出ArrayList中的每个日期。输出看起来像,

2007-09-07
2007-09-07
2007-10-05
2007-10-05
2007-10-05
2007-10-05
2007-10-05

但我的dateFormat行从不向dates[]添加任何值。任何帮助,将不胜感激。

不,这不是功课。

3 个答案:

答案 0 :(得分:2)

试试这个:

List<String> dateValues = new ArrayList<String>();
Date[] dates = new Date[dateValues.size()];
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
int i = 0;
for (String dateValue : dateValues) {
    dates[i++] = dateFormat.parse(dateValue);
}

“代码越少越好”,因此请使用语言(foreach循环等)来保持代码的小巧和干净(如上面的代码所示)。

在你发表评论之前请注意:“代码越少越好”,只要它仍然可读。

答案 1 :(得分:1)

如果该行:

//System.out.println(listIterator.next().toString()); 

取消注释next()在一次迭代中被调用两次,最终会导致NoSuchElementException被抛出。意味着不会执行后续的for循环。存储next()的结果:

while(listIterator.hasNext())
{
    String s = listIterator.next().toString();
    System.out.println(s);
    dates[i] = dateFormat.parse(s);
    i++;
}

答案 2 :(得分:0)

@Tom Celic的解决方案对我有用。

List<String> dateValues = new ArrayList<String>();
    dateValues.add("2012-09-08");
    dateValues.add("2011-09-08");
    Date[] dates = new Date[dateValues.size()];
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    int i = 0;
    for (String dateValue : dateValues) {
        dates[i++] = dateFormat.parse(dateValue);
    }
    System.out.println(dates.length);
    System.out.println(dates[0]);
    System.out.println(dates[1]);

打印:

    2
Sat Sep 08 00:00:00 IST 2012
Thu Sep 08 00:00:00 IST 2011