试图字符串日期转换成日期

问题描述:

java.text.ParseException:无法解析的日期:“星期六05月01日00:00:00 EDT 2010”试图字符串日期转换成日期

我试图解析使用的SimpleDateFormat类此日期。

java.util.Date prevStartDate = new Date(); 
java.util.Date prevStopDate = new Date(); 
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
prevStartDate = dateFormat.format(startDateLY); 
+3

你试图解析日期看上去一点也不像你已经在自己的日期格式给我们看。事实上,我根本没有在你的问题中看到对'parse'的调用。那是相关的代码吗? – Paul 2011-12-19 22:12:56

那将是因为你使用的yyyy-MM-dd格式 - 你必须在你的输入添加的每个参数,该格式。

它看起来像你的格式是E MMM dd HH:mm:ss z yyyy

所以,你需要从一个转换到另一个:

static DateFormat extended = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy"); 
static DateFormat simple = new SimpleDateFormat("yyyy-MM-dd"); 

String reformat(String extendedString) { 
    Date yourDate = extended.parse(extendedString); 
    String simpleString = simple.format(yourDate); 
    return simpleString; 
} 

或者,

String reformat(String dateString) { 
    return simple.format(extended.parse(dateString)); 
} 

DateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy"); 
Date date = (Date)formatter.parse("Sat May 01 00:00:00 EDT 2010"); 
String string = new String(date.getYear() + "-" + date.getMonth() + "-" + date.getDay()); 

应更好地工作,然后只是yyyy-MM-dd

+0

我需要一个MySQL插入的yyyy-mm-dd – kbrin80 2011-12-19 22:16:54

+0

@ kbrin8 - 我已经更新了答案,给了你一个格式的字符串 – Grammin 2011-12-19 22:21:45

+0

有几个问题与此。首先,它使用格式化程序进行解析(良好),但为何不使用格式化程序进行输出?其次,使用'new String'几乎总是一个糟糕的决定,实际上它在这种情况下也是强制备份数组的副本。 – corsiKa 2011-12-19 22:23:19

SimpleDateFormat是一个依赖于语言环境,因此通过提供一个你可以得到本地化的特定语言或国家的日期字符串

http://www.javablogging.com/java-simpledateformat-examples/