1

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

前述のイオン コメントのように、テストをさらに簡単にすることができます。

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

これにより、解析例外がスローされます。Nexus 1 デバイス、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

このコードをコピーして、キャスト例外が発生しました...

私のこのコードを試してみてください

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 に答える
0

次のようにロケールを指定してみてください。

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