Java SimpleDateFormat parse 遭遇unparsable date異常

在我的win7x32機器,Java 6, 運行以下代碼總是報錯unparsble date異常

String time = "10:30:35PM";
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ssa");
try {
  Date date = sdf.parse(time);
} catch (Exception e) {
  System.out.println(e.toString());
}

我仔細檢查了日期格式定義”hh:mm:ssa”,發現沒有問題。

於是搜索,發現了別人遇到的此類問題的各種原因:
比如有人的輸入是從request.getParameter獲得的, 用parseObject就可以了
有人是字符串有莫名其妙的隱形字符,需要用replaceAll(奇怪的正則表達式)去掉這些看不見的字符。

而這些都似乎不是我的問題,最後,受到某個帖子的啓發,覺得有可能是Locale的問題。果然,因爲我是中文操作系統,當我輸入改爲

String time = "10:30:35下午";

就OK了
但是我的輸入必須是“PM”,因此格式定義加上Locale.US就行了。

SimpleDateFormat("hh:mm:ssa",Locale.US);
發佈了120 篇原創文章 · 獲贊 23 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章