在我的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);