Android 2.0模拟器中奇怪的解析日期字符串错误

时间:2010-05-17 21:43:49

标签: java android

我有一个简单的测试代码,用于测试SimpleDateFormat。此代码适用于Eclipse和Android 1.5模拟器,但在Android 2.0模拟器中失败。有谁知道为什么?感谢。

public class TemplateActivity extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       tv.setText(R.string.hello);
       setContentView(tv);

       SimpleDateFormat format =
           new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");

       String dateStr = "Mon, 17 May 2010 01:45:41 GMT"; 

       try {
           Date parsed = format.parse(dateStr);
           Log.v("Test", parsed.toString());
       } catch (ParseException pe) {
           Log.v("Test", "ERROR: Cannot parse \"" + dateStr + "\"");
       }

   }
}

记录消息:

V/Test(  400): ERROR: Cannot parse "Mon, 17 May 2010 01:45:41 GMT"

3 个答案:

答案 0 :(得分:1)

回复Skrud,

我试过“EEE,dd MMM yyyy HH:mm:ss z”,但得到了同样的错误信息。

我也试过

SimpleDateFormat format =
       new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);

有效。但是系统需要很长时间才能为每次调用加载en_US的时区名称:

I/Resources(  471): Loaded time zone names for en_US in 1904ms.
D/dalvikvm(  471): GC freed 10658 objects / 486232 bytes in 88ms
I/Resources(  471): Loaded time zone names for en_US in 1400ms.
I/Resources(  471): Loaded time zone names for en_US in 1260ms.
D/dalvikvm(  471): GC freed 10615 objects / 491920 bytes in 91ms
I/Resources(  471): Loaded time zone names for en_US in 1360ms.
I/Resources(  471): Loaded time zone names for en_US in 1232ms.
D/dalvikvm(  471): GC freed 10623 objects / 460544 bytes in 91ms
I/Resources(  471): Loaded time zone names for en_US in 1344ms.
I/Resources(  471): Loaded time zone names for en_US in 1228ms.

我该怎么办?

答案 1 :(得分:0)

您的格式字符串可能应该是"EEE, dd MMM yyyy HH:mm:ss z"

查看SimpleDateFormat's Javadoc page

上的示例

答案 2 :(得分:0)

我也遇到了同样的问题,因为我调试问题属于将表单Date转换为字符串的方法,我在这里有一个解决方案: Android load timezone too long: Loaded time zone names for en_US

表现增加了10倍:)