2013-05-09 46 views
2

我將String轉換爲Date格式。但它返回"Unparseable date"。例如,字符串日期值轉換

String date= "Wednesday, May 15, 2013";

我想將其轉換爲字符串如"2013-05-15"如何做到這一點?

+1

檢查的JavaDoc [SimpleDateFormat的(http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html)。 – Laf 2013-05-09 15:31:21

回答

6

使用SimpleDateFormat兩次:第一次解析Date,其他以使其在所需的格式:

Date date; 
String display = new SimpleDateFormat("yyyy-MM-dd").format(
     new SimpleDateFormat("EEEE, MMMM dd, yyyy").parse(date) 
    ); 

你舉的例子日期是不幸的,因爲它使用的只有3個字母月「五一」,所以我不知道你的月份名是否全部被截斷爲3個字母,或者它們是全名。我假設有幾個月是全名,但如果它們被截斷,請在第二個格式字符串中將MMMM更改爲MMM

2

像這樣的東西可能會幫助(解析日期字符串到日期的對象,並對其進行格式化回到新的格式):

String dateString = "Wednesday, May 15, 2013"; 
    DateFormat format1 = new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 
    Date date = format1.parse(dateString); 

    DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd"); 
    String updatedDateString = format2.format(date); 
    System.out.println("Updated Date > "+updatedDateString); 
0

在我的實驗這一點,你需要做類似下面的.. 。請參閱API瞭解如何構建您的格式字符串。 http://docs.oracle.com/javase/6/docs/api/index.html?java/text/DateFormat.html

String myDateAsString = "Wednesday, May 15, 2013"; 
SimpleDateFormat df = new SimpleDateFormat("EEEE, MMM d, yyyy"); 
Date d = new Date(); 
try { 
    d = df.parse(myDateAsString); 
} catch (ParseException e1) { 
    System.out.println("Could not parse...something wrong...."); 
    e1.printStackTrace(); 
} 
df.applyPattern("yyyy-MM-d"); 
String convertedDate = df.format(d); 
System.out.println(convertedDate); 

這將是一個不錯的辦法。

+0

想指出這應該有一個微小/更好的性能提供的其他方法,因爲你只創建一個Date和一個DateFormat對象。 SimpleDateFormat.applyPattern方法適用於像這樣的情況,即採用一種日期格式,然後將其轉換爲另一種格式。 – 2013-05-09 15:52:36

0

事情是這樣的:

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

public class StringDate { 
    public static void main(String[] args) throws ParseException{ 
     String dateString = "Wednesday, May 15, 2013"; 
     DateFormat format1 = new SimpleDateFormat("E, MMM dd, yyyy"); 
     Date date = format1.parse(dateString); 
     DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd"); 
     String updatedDateString = format2.format(date); 
     System.out.println("Updated Date > "+updatedDateString); 
    } 
}