[英]Unexplained ParseException for SimpleDateFormat
我正在嘗試解析以"01-26-2012 03:07 AM"
格式顯示的日期。
我創建了這個SimpleDateFormat
:
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy hh:mm a");
然而每次我解析以下內容時:
String date = "01-26-2012 03:07 AM";
Date myDate = DATE_FORMAT.parse(date.trim());
我得到一個ParseException
:
java.text.ParseException:無法解析的日期:“01-26-2012 03:07 AM”在 java.text.DateFormat.parse(DateFormat.java:337)
我的SimpleDateFormat
字符串是否正確? 還有什么可能阻止它解析嗎?
這很可能是語言環境問題。 例如,如果您嘗試使用英語語言環境,它應該可以工作:
DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.ENGLISH);
由於您沒有指定區域設置,系統會使用默認的區域設置,並且“AM”可能無法正確解析。
下面的代碼輸出
myDate = 2012 年 1 月 26 日星期四 03:07:00 GMT
public static void main(String[] args) throws Exception {
String date = "01-26-2012 03:07 AM";
DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.ENGLISH);
Date myDate = DATE_FORMAT.parse(date.trim());
System.out.println("myDate = " + myDate);
}
附帶說明一下,如果您將代碼更改為Locale.CHINESE
,例如,您將收到解析異常。
將SimpleDateFormat
用作靜態對象是不正確的,因為它不是線程安全的。 我不能說這是這里的問題,但可能是一個指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.