0

我正在解析后台日期(C# \\/Date\\((\\d+)([-+]\\d+)?\\)\\/org.joda.time.DateTime

示例:
1 - BO 日期 = /Date(1380891215020+0100)/
2 - DateTime BO 日期解析 = 2013-10-04T12:53:35.020+01:00
3 - Calendar.setTime(DateTime BO 日期解析) = Fri Oct 04 12:53:35 GMT+01:00 2013
4 - 字符串 finalDate = Calendar.getTime().toString(); = 2013 年 10 月 4 日星期五 12:53:35 GMT+01:00

此时一切顺利。现在我想进行日期比较:

Date dateA = mySimpleDateFormat.parse(finalDate);
Calendar cal = Calendar.getInstance();
cal.setTime(dateA);
...

当我使用在某些设备mySimpeDateFormat中解析时finalDate

java.text.ParseException:无法解析的日期:“Fri Oct 04 12:53:35 WEST 2013”​​(偏移量 20)“

被抛出。HTC One S就是其中一种设备。

电话日期和时间设置:
- 自动日期和时间:true
- 自动时区:false


知道为什么会有 WEST 而不是 GMT+01:00?
谢谢你的时间。

4

3 回答 3

1

设备区域设置(处理语言和时间)可能是问题所在。finalDate 字符串显然是英文时间戳,您的设备可能不是。

于 2013-10-04T11:18:10.053 回答
1

我经历过类似的问题。改为使用Calendar cal = Calendar.getInstance(Locale.US);。在某些设备上,语言环境不是美国,而是在其他一些语言环境中Calendar.getInstance()返回Calendar。同样适用SimpleDateFormat,尝试使用mySimpleDateFormat = new SimpleDateFormat(format, Locale.US);.

于 2013-10-04T11:18:13.260 回答
0

找到了解决方案!
首先感谢您的回答。

我忘了说我的语言环境是 Locale.ENGLISH 但问题不存在,它在第 4 步:

String finalDate  = mySimpleDateFormat.format(Calendar.getTime());

代替

String finalDate = Calendar.getTime().toString(); 

现在我总是有一个日期格式,比如Fri Oct 04 12:53:35 GMT+01:00 2013并且一切正常;)
谢谢!

于 2013-10-04T11:30:13.433 回答