2012-05-23 20 views
1

我目前有一個ArrayList填充格式爲2012-06-19的日期,我試圖將它們全部添加到Date s的數組中。如何將字符串轉換爲日期Java

這是

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

將打印出的ArrayList每次約會是我失敗的代碼部分,

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()}; 
} 

線。輸出樣子,

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

但我dateFormat線從來沒有任何增加值dates[]。任何幫助,將不勝感激。

不,不是作業。

+0

你能不能給我們你在dateValues有弦的例子嗎? – noShowP

+0

我懷疑它會拋出被忽略的異常,請檢查字符串格式 –

+1

您應該**從不**拋出異常並忽略它,除非您有充分的理由。至少打印出來。 –

回答

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

如果線路:

//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++; 
} 
+0

仍然沒有骰子的人,日期打印出來沒有什麼會被添加到'日期[]' – TomSelleck

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