我有一个简单的测试代码,用于测试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"
答案 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"
。
答案 2 :(得分:0)
我也遇到了同样的问题,因为我调试问题属于将表单Date转换为字符串的方法,我在这里有一个解决方案: Android load timezone too long: Loaded time zone names for en_US
表现增加了10倍:)