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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值