Java Android 2.3.3中不可解析的日期异常在较新版本中不存在
我正在使用以下SimpleDataFormat解析日期字符串: 代码段: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
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。