我寫了一個簡單的Util方法來將Java中的String
轉換爲util.Date
。什麼我無法搞清楚的是爲什麼該方法適用於第一輸入,且不能爲第二個,因爲輸入完全相同:與Java中的數據格式不一致的ParseExeption
代碼:
package util;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDate {
public Date getDateFromString(String strDate, String dateFormat) {
DateFormat df = new SimpleDateFormat(dateFormat);
Date date = null;
try {
date = df.parse(strDate);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(date);
return date;
}
public static void main(String[] args) {
StringToDate s2d = new StringToDate();
s2d.getDateFromString("12-18-11, 10:36 AM","MM-dd-yy, hh:mm a");
s2d.getDateFromString("02-04-12, 01:17 PM","MM-dd-yy, hh:mm a");
}
}
輸出:
Sun Dec 18 10:36:00 CET 2011
null
java.text.ParseException: Unparseable date: "02-04-12, 01:17 PM"
at java.text.DateFormat.parse(DateFormat.java:337)
at util.StringToDate.getDateFromString(StringToDate.java:17)
at util.StringToDate.main(StringToDate.java:33)
從邏輯上講,輸出應該是Sat Feb 04 13:17:00 CET 2012
,首先輸出。爲什麼ParseException
被拋出?
編輯:下面兩行正常工作:
s2d.getDateFromString("02-04-12", "MM-dd-yy");
s2d.getDateFromString("01:17 PM", "hh:mm a");
輸出:
Sat Feb 04 00:00:00 CET 2012
Thu Jan 01 13:17:00 CET 1970
但是,當我嘗試解析日期和時間一起發生異常。
我很困惑 - 它適合我。 – 2012-04-01 14:44:16
我也是 - 你在哪種文化?感謝您提供一個簡短但完整的程序,請注意:) – 2012-04-01 14:46:50
@JonSkeet:我不明白「你在哪種文化?」,但感謝你的讚美!該程序對你來說工作正常嗎?我正在使用JDK 1.6(1.6.0.11)。我嘗試了Eclipse,甚至是運行上述[SSCCE]的經典命令提示符路由(http://homepage1.nifty.com/algafield/sscce.html)。不過,同樣的例外;同樣的不一致。幫幫我! – SNag 2012-04-01 15:03:03