当我更改显示时间时,SimpleDateFormat崩溃

时间:2014-01-20 18:17:58

标签: java date-parsing

我有一个使用SimpleDateFormat来解析日期的应用程序。我突然想要将计算机的显示时间格式改为中文格式,然后将其留在那里做其他事情。

几分钟后,当我回去运行我的应用程序时,出于某种原因我收到了“Unparseable date”错误。这从未发生过;我从未介绍任何新代码,所以我想知道出了什么问题。

然后我跟踪了我的动作并记得我改变了时间显示的格式,所以我把它改回来了,应用程序像往常一样运行。

现在,查看文档,我发现该库对语言环境敏感。幸运的是,此应用程序仅供个人使用,我可以完全控制计算机的设置。但是,如果我要部署一个公共消费应用程序,我无法控制他们的环境,所以如果我的客户端没有使用美国时间格式,他们就会不高兴。

  1. 这是所有日期时间解析库中的问题吗?
  2. 是否有“locale insensitive”库可以透明地为您处理区域设置检测?如果是这样,我该怎么用?
  3. 由于这种行为,我应该完全避免SimpleDateFormat吗?

1 个答案:

答案 0 :(得分:1)

问题是格式解析取决于区域设置。为了安全起见,您必须在创建SimpleDateFormat的实例时显式发送预期的语言环境。否则,您的defult系统区域设置可能会令人困惑。

这发生在你的情况下。你的程序运作良好。然后你改变了“你的计算机的时间格式”,这改变了你的语言环境。然后你的程序停止工作。