Android SimpleDataFormat无法解析datetime(在sun 1.6 jre上工作正常)

Android SimpleDataFormat无法解析datetime(在sun 1.6 jre上工作正常),android,date-format,simpledateformat,Android,Date Format,Simpledateformat,你知道为什么Android 2.2上的以下功能失败了吗 java.text.ParseException:不可解析日期:2011-02-16 11:38:03.328 UTC …虽然它在sun JRE 1.6上运行良好 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S z"); try { Date date = dateFormat.parse("2011-02-16 11:38:

你知道为什么Android 2.2上的以下功能失败了吗

java.text.ParseException:不可解析日期:2011-02-16 11:38:03.328 UTC

…虽然它在sun JRE 1.6上运行良好

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S z");
    try
    {
      Date date = dateFormat.parse("2011-02-16 11:38:03.328 UTC");
    }
    catch (ParseException e)
    {
      e.printStackTrace();
    }
如前所述,ion注释可以使测试更加简单:

new SimpleDateFormat("z").parse("UTC")
这会引发一个解析异常。我使用的是nexus one设备,android 2.2可以用它来代替

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z");

请尝试按以下方式指定区域设置:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S z", Locale.ENGLISH);

我已经复制了这个代码,并得到了铸造异常

试试我的密码

java.text.SimpleDateFormat format = new SimpleDateFormat(
                    "dd-MM-yyyy");
            java.util.Calendar cal = Calendar.getInstance(new SimpleTimeZone(0,
                    "GMT"));
            format.setCalendar(cal);
java.util.Date date = null;
            try {
                date = format.parse(EditProfile.dateOFBirth);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

我希望这对您有所帮助

我现在有一个解决办法:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S 'UTC'");
try
{
  Date date = dateFormat.parse("2011-02-16 11:38:03.328 UTC");
}
catch (ParseException e)
{
  e.printStackTrace();
}
这让我至少可以在Android 2.2中解析日期。我的应用程序已被修改为尝试“yyyy-MM-dd HH:MM:ss.S‘UTC’”,如果第一次解析失败,则尝试“yyy-MM-dd HH:MM:ss.S z”


感谢您的所有回答

您的代码对我来说运行正常,它是针对安卓1.5jar编译的。对于上述类,您使用什么导入?您是在设备上运行还是在模拟器上运行?在nexus one设备上运行。导入正如您所期望的那样,实际上可以使测试更加简单。新的SimpleDataFormat(“z”).parse(“UTC”)UTC似乎不受支持,这非常令人惊讶……在Andriod 2.2中引发了异常,但在标准sun中却没有JRE@user508047请列出您在代码示例中列出的类的导入。您可以使用多个同名的类。我只知道一个SimpleDataFormat?DateFormat和SimpleDateFormat都是从包java.text导入的抱歉,看不出这有什么帮助?亲爱的,您可以根据代码更改日期格式来继续使用此代码。如果您遇到强制转换异常,则您一定使用了错误的导入。我是否将日历对象设置为时区没有区别。我收到格式为“2011-02-16 11:38:03.328 UTC”的字符串,必须对其进行解析。这在Android 2.2上失败。正如我在我的原始问题中添加的一样,以下一行程序在Android中失败,但在sun jvm新SimpleDataFormat(“z”).parse(“UTC”)上没有。我现在有一个解决方法如果我需要使用locale istanbul,我如何才能做到这一点,因为locale.turkey或istanbul不存在。很抱歉我需要它?因为我写的是dateformat模板字符串