某些设备中的SimpleDateFormat ParseException

时间:2013-10-04 11:12:26

标签: java android calendar simpledateformat parseexception

我正在使用\\/Date\\((\\d+)([-+]\\d+)?\\)\\/

解析后台日期(C#)org.joda.time.DateTime

例:
1 - BO日期= /日期(1380891215020 + 0100)/
2 - 解析日期时间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 - String finalDate = Calendar.getTime()。toString(); = Fri Oct 04 12:53:35 GMT + 01:00 2013

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

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

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

  

java.text.ParseException:Unparseable date:“Fri Oct 04 12:53:35 WEST   2013“(抵消20)”

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

电话日期&时间设置:
- 自动日期和时间:真实的 - 自动时区:假


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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我遇到过类似的问题。请改用Calendar cal = Calendar.getInstance(Locale.US);。在某些设备上,区域设置不是美国,而Calendar.getInstance()在某些其他区域设置中返回CalendarSimpleDateFormat也是如此,请尝试使用mySimpleDateFormat = new SimpleDateFormat(format, Locale.US);

答案 2 :(得分:0)

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

我忘了说我的Locale是Locale.ENGLISH但问题不在那里,它是在第4步:

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

而不是

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

现在我的日期格式总是像 Fri Oct 04 12:53:35 GMT + 01:00 2013 ,一切正常;)
谢谢!