使用完整的国家/地区名称解析时间戳

时间:2014-02-13 10:46:31

标签: date simpledateformat

我试图在JAVA中解析我从API收到的日期/时间。

我收到的时间戳如下:“2月13日星期二12:11:09 IST(以色列)2014”

我正在使用Java的SimpleDateFormat,但是我没有看到国家名称(括号)是如何到达此字符串的,以及我应该如何解析它。

这是我不了解的标准格式吗?

更新:

我从Android应用程序收到此时间戳。有趣的是完全相同的应用程序,在不同的设备上运行给了我:“Tue Feb 04 17:36:31 GMT + 02:00 2014”

GMT + 2也是以色列,同样的时区,格式不同......为什么??

1 个答案:

答案 0 :(得分:0)

我不知道android管理时区名称资源的位置。无论如何,显然资源名称在这一台设备(由谷歌?)上进行了更改,并有动机避免重复。 IST的缩写并不是唯一的,也可以代表“印度标准时间”,而不是亚洲/ Colcata(以色列时区是亚洲/耶路撒冷)。

如果您无法解析“IST(以色列)”,那么我假设以下事项:如果您直接在Android设备上通过SimpleDateFormat解析它,那么它应该可以正常工作。但是,如果远程获取此字符串,则只能应用字符串的预处理(过滤掉国家/地区),因为其他设备不一定会管理和共享相同的时区名称资源。您可以通过调用DateFormatSymbols.getZoneStrings()直接在Android上检查存储的资源。

结论:您应该将此类字符串视为设备相关的。对于数据交换,这些格式设计得不好。您应该尝试使用“yyyy-MM-dd'T'HH:mm:ssXX”等格式的ISO字符串,而不是使用此类专有格式。您使用的API是否提供任何替代格式?