使用Java 1.6接收ParseException,字符串包含ISO 8601格式的日期
当我尝试将ISO 8601格式的字符串解析为Java日期类型时,会不断收到ParseException使用Java 1.6接收ParseException,字符串包含ISO 8601格式的日期,java,date,iso,Java,Date,Iso,当我尝试将ISO 8601格式的字符串解析为Java日期类型时,会不断收到ParseException String myDateString = "2014-07-04T22:59:36Z"; TimeZone timeZone = TimeZone.getTimeZone("UTC"); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'", Locale.US); dateFormat.setTimeZ
String myDateString = "2014-07-04T22:59:36Z";
TimeZone timeZone = TimeZone.getTimeZone("UTC");
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'", Locale.US);
dateFormat.setTimeZone(timeZone);
Date formattedDate = dateFormat.parse(myDateString);
继续返回ParseException:
Unparseable date: "2014-07-04T22:59:36Z"
我可能做错了什么?您的日期格式中缺少秒数:
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
tl;博士
对于Java6和Java7,将ThreeTen Backport库添加到您的项目中。对于Java8和更高版本,Java.time是内置的
Instant.parse( "2014-07-04T22:59:36Z" )
java.time
现代的方法是使用java.time类来取代麻烦的旧的遗留日期时间类,如SimpleDateFormat
、date
和Calendar
虽然内置于Java8和更高版本中,但可以使用Java6和Java7的后端口。(见下文)
Instant
该类表示时间线上的一个时刻,分辨率为(小数点的九(9)位)
默认情况下,java.time类使用ISO8601格式。因此,无需指定格式模式。Instant
类可以直接解析输入字符串
Instant instant = Instant.parse( "2014-07-04T22:59:36Z" );
要生成标准ISO 8601格式的字符串,只需调用toString
String output = instant.toString();
2014-07-04T22:59:36Z
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 从哪里获得java.time类
- 后来
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门为Android采用了ThreeTen Backport(如上所述)
- 看
该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,例如、、和。您应该使用
X
(无引号)而不是'Z'
。您需要:ss
几秒钟--“yyyy-MM-dd'T'HH:MM:ssX”
。可能存在重复的