我可以在Android项目中成功执行以下代码段:
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ssZ", Locale.US);dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));Date date = null;try { date = dateFormat.parse("2015-08-17T19:30:00+02:00");} catch (ParseException e) { e.printstacktrace();}
现在我将相同的代码片段放入JUnit4测试中:
@RunWith(JUnit4.class)public class DateUtilsTests { @Test public voID testFailsWithParseException() { SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ssZ", Locale.US); dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); Date date = null; try { date = dateFormat.parse("2015-08-17T19:30:00+02:00"); } catch (ParseException e) { e.printstacktrace(); } assertthat(date).isNotEqualTo(null); }}
这失败了:
java.text.ParseException: Unparseable date: “2015-08-17T19:30:00+02:00”
解决方法:
从SimpleDateFormat
Javadoc:
> Z对应RFC 822 time zone(如-0800)
> X对应于 ISO 8601 time zone(如-08或-0800或-08:00)
在您的情况下,您想要解析以02:00形式编写的时区(即在小时和分钟之间使用冒号),因此您应该使用X标记而不是Z标记.
但是,在AndroID中,SimpleDateFormat
没有X标记,只有Z,文档声明Z支持解析格式为-08:00的时区.
以上是内存溢出为你收集整理的JUnit4测试导致java.text.ParseException:Unparseable date全部内容,希望文章能够帮你解决JUnit4测试导致java.text.ParseException:Unparseable date所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)