SimpleDateFormat在Java和Java中是不同的Android的?

时间:2014-12-05 20:56:02

标签: java android simpledateformat

我在Java中使用下面的代码并且工作得很完美!

SimpleDateFormat format = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z");
Date date = format.parse("Sun, 11 May 2014 23:11:51 +0430");

但在Android中我遇到了异常!

java.text.ParseException: Unparseable date: "Sun, 11 May 2014 23:11:51 +0430" (at offset 0)

什么错了?!

2 个答案:

答案 0 :(得分:4)

问题是如果默认语言环境是英语,代码将正确执行,否则将引发异常。您可以通过添加正确的区域设置来解决此问题。

//Locale locale = new Locale("en-US");  
Locale locale = Locale.US;  
SimpleDateFormat format = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z", locale);
Date date = format.parse("Sun, 11 May 2014 23:11:51 +0430");

可能Android设备有不同的语言设置。考虑在注释中使用常量Locale作为RC,在这种情况下,您不需要额外的变量,直接在构造函数中使用常量。

答案 1 :(得分:1)

SimpleDateFormat format = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z", Locale.US);
Date date = format.parse("Sun, 11 May 2014 23:11:51 +0430");

如果设备上的区域设置是德语,例如,如果您解析此日期,则会执行代码:

SimpleDateFormat format = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z", Locale.GERMAN);
Date date = format.parse("So, 11 Mai 2014 23:11:51 +0430");