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

如何将字符串转换为日期Java,java,string,list,parsing,date,Java,String,List,Parsing,Date,目前,我有一个ArrayList,其中以2012-06-19格式填写了日期,我正试图将它们全部添加到Dates的数组中 这是代码中让我失望的部分 listIterator = dateValues.listIterator(); Date [] dates = new Date[dateValues.size()]; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); int i =

目前,我有一个
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()};
}
将打印出ArrayList中的每个日期。输出看起来像

2007-09-07
2007-09-07
2007-10-05
2007-10-05
2007-10-05
2007-10-05
2007-10-05
但是我的
dateFormat
行从不向
dates[]
添加任何值。任何帮助都将不胜感激

不,这不是家庭作业

试试这个:

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);
}
List dateValues=new ArrayList();
日期[]日期=新日期[dateValues.size()];
SimpleDataFormat dateFormat=新SimpleDataFormat(“yyyy-MM-dd”);
int i=0;
for(字符串日期值:日期值){
dates[i++]=dateFormat.parse(dateValue);
}
“代码越少越好”,所以使用这种语言(foreach循环等)来保持代码的小而干净(如上面的代码)

在评论之前,请注意“代码越少越好”,只要代码保持可读性。

如果行:

//System.out.println(listIterator.next().toString()); 
未注释的
next()
在一次迭代中被调用两次,这将最终导致抛出
NoTouchElementException
。这意味着后续的
for
循环将不会执行。存储
next()
的结果:


由@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]);

你能给我们举一个dateValues中的字符串的例子吗?我怀疑它会引发异常,而这个异常会被捕获和忽略,请检查strings的格式。除非你有充分的理由,否则你永远不应该捕获异常并忽略它。至少要打印出来。如果你在一次迭代中两次取消调用
next()
的那一行的注释,这最终会导致抛出
NoSuchElementException
。嘿,刚刚添加了系统的示例输出。out.println(),我有一个e.printStackTrace(),我只是从来没有在这里写过对不起。还是没有骰子人,日期可以打印出来,但没有添加任何内容到日期[]
while(listIterator.hasNext())
{
    String s = listIterator.next().toString();
    System.out.println(s);
    dates[i] = dateFormat.parse(s);
    i++;
}
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