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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章