Java Android 2.3.3中不可解析的日期异常在较新版本中不存在

Java Android 2.3.3中不可解析的日期异常在较新版本中不存在,java,android,date,Java,Android,Date,我正在使用以下SimpleDataFormat解析日期字符串: 代码段: SimpleDateFormat format = new SimpleDateFormat("'cappicor' yyyy-MM-dd HH:mm zz", Locale.US); dateTime = format.parse(title) 下面是我收到的“标题”日期字符串示例: "cappicor 2013-12-07 11:54 UTC" 这在许多较新的设备和Android版本中运行良好,但在Android

我正在使用以下SimpleDataFormat解析日期字符串:

代码段:

SimpleDateFormat format = new SimpleDateFormat("'cappicor' yyyy-MM-dd HH:mm zz", Locale.US);
dateTime = format.parse(title)
下面是我收到的“标题”日期字符串示例:

"cappicor 2013-12-07 11:54 UTC"
这在许多较新的设备和Android版本中运行良好,但在Android 2.3.3中失败,原因是:

java.text.ParseException:无法解析的日期:“cappicor 2013-12-07 11:54 UTC”

我已经浏览了很多答案,与所使用的语言环境有关,甚至从字符串中解析出可能的控制字符——运气不好


有什么想法吗?

从1.4到1.7的Java版本都没有给我这个错误,尽管事实上Android 2.3.3给了我这个错误

从ORACLE文档中:

可以使用单引号(')引用文本以避免解释。“''”表示单个引号

从Android文档中:

“单引号(文字)”o“clock”:o“clock

所以这里没有区别。但是,我注意到时区UTC引起了一个问题。将代码更改为

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
Date dateTime = format.parse("2013-12-07 11:54");
。。。它起作用了。有点奇怪,因为

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm zz", Locale.US);
Date dateTime = format.parse("2013-12-07 11:54 GMT");
。。。也可以很好地工作(EST、PST也是如此)和
时区。getAvailableIDs()
返回
UTC
CET
MET
,这些都不起作用

结论:使用

SimpleDateFormat format = new SimpleDateFormat("'cappicor' yyyy-MM-dd HH:mm", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
Date dateTime = format.parse("cappicor 2013-12-07 11:54");

。。。作为一种解决方法。

从1.4到1.7的Java版本中没有一个给我这个错误,尽管事实上Android 2.3.3确实给了我这个错误

从ORACLE文档中:

可以使用单引号(')引用文本以避免解释。“''”表示单个引号

从Android文档中:

“单引号(文字)”o“clock”:o“clock

所以这里没有区别。但是,我注意到时区UTC引起了一个问题。将代码更改为

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
Date dateTime = format.parse("2013-12-07 11:54");
。。。它起作用了。有点奇怪,因为

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm zz", Locale.US);
Date dateTime = format.parse("2013-12-07 11:54 GMT");
。。。也可以很好地工作(EST、PST也是如此)和
时区。getAvailableIDs()
返回
UTC
CET
MET
,这些都不起作用

结论:使用

SimpleDateFormat format = new SimpleDateFormat("'cappicor' yyyy-MM-dd HH:mm", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
Date dateTime = format.parse("cappicor 2013-12-07 11:54");

。。。作为一种解决方法。

我会去掉这个cappicor前缀,然后尝试解析。你能添加完整的stacktrace吗?也许里面有个虫子。例如,特定的Android版本不知道“UTC”是时区。我会去掉这个cappicor前缀,然后尝试解析。你能添加完整的stacktrace吗?也许里面有个虫子。例如,特定的Android版本不知道“UTC”是一个时区,可以修复它。我想这是一个在以后的版本中修复的bug。谢谢,这很好地修复了它。我想这是一个在以后版本中修复的bug。