1

为什么在Android 2.2上following失败的任何想法......

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 Comment 所述,可以使测试更加简单:

new SimpleDateFormat("z").parse("UTC")

这会引发解析异常。我正在使用一个 nexus one 设备,android 2.2

4

4 回答 4

2

改用这个

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z");
于 2011-02-16T12:54:16.677 回答
1

我现在有一个解决方法:

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'”,然后在第一次解析失败时尝试“yyyy-MM-dd HH:mm:ss.S z”

于 2011-02-21T18:18:52.850 回答
0

尝试像这样指定语言环境:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S z", Locale.ENGLISH);
于 2011-02-16T12:55:41.613 回答
0

我已经复制了这段代码并得到了强制转换异常......

试试我的这个代码

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();
            }
于 2011-02-16T12:59:02.303 回答