Android SimpleDateFormat 无法解析日期时间(在 sun 1.6 jre 上工作正常)

发布于 2024-10-17 13:37:38 字数 558 浏览 7 评论 0原文

任何想法为什么以下失败在 Android 2.2...

java.text.ParseException: Unparseable date: 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

Any ideas why the followng fails on Android 2.2...

java.text.ParseException: Unparseable date: 2011-02-16 11:38:03.328 UTC

...while it works fine on a 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();
    }

As mentioned ion Comment, can make the test even simpler:

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

This throws a parse exception. I am using a nexus one device, android 2.2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

孤独陪着我 2024-10-24 13:37:38

用这个代替

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

Use this instead

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z");
紫罗兰の梦幻 2024-10-24 13:37:38

我现在有一个解决方法:

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”

I have a workaround now:

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();
}

This allows me to at least parse the date in Android 2.2. My application has been modified to try "yyyy-MM-dd HH:mm:ss.S 'UTC'" and then try "yyyy-MM-dd HH:mm:ss.S z" if the first parse fails

信愁 2024-10-24 13:37:38

尝试像这样指定区域设置:

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

Try specifying the locale like this:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S z", Locale.ENGLISH);
深海夜未眠 2024-10-24 13:37:38

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

尝试我的这段代码

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();
            }

I have copied this code and got casting exception...

try this code of mine

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();
            }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文