JUnit4测试导致java.text.ParseException:Unparseable date

JUnit4测试导致java.text.ParseException:Unparseable date,第1张

概述我可以在Android项目中成功执行以下代码段:SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ",Locale.US);dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));Datedate=null;try{date=dateFormat.parse(

我可以在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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1118214.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存