簡體   English   中英

SimpleDateFormat 的無法解釋的 ParseException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM