【问题标题】:SimpleDateFormat ParseException in some devices某些设备中的 SimpleDateFormat ParseException
【发布时间】:2013-10-04 11:12:25
【问题描述】:

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

示例:
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 吗?
感谢您的宝贵时间。

【问题讨论】:

    标签: java android calendar simpledateformat parseexception


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        找到了解决办法!
        首先感谢您的回答。

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

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

        而不是

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-28
          相关资源
          最近更新 更多