我使用此代码将String转换为java Date Object。我需要为DateTimeFormatter和ZonedDateTime使用maven依赖。
Date date = Date.from(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ").parse("2015-01-12T05:00:00.000+0000", ZonedDateTime::from).toInstant())
任何人都可以帮助我......
答案 0 :(得分:4)
您必须使用Java8来使用这些类,它们已在此版本中添加。如果你还没有使用Java8,你可以使用JodaTime(http://www.joda.org/joda-time/),但API有点不同
编辑:正如Basil Bourque所说,不建议使用JodaTime,而是使用他帖子中描述的backport。
答案 1 :(得分:2)
其他一些答案在建议Joda-Time库时是不正确的。这个源代码显然使用了Java 8及更高版本中内置的java.time类。
java.time框架是Joda-Time的继承者,由JSR 310定义,由创建Joda-Time,Stephen Colbourne的同一个人领导。
要回答问题,如果您使用的是Java 6或7,请使用ThreeTen-Backport项目。许多java.time功能都在那里反向移植。
目前,Maven依赖是:
<dependency>
<groupId>org.threeten</groupId>
<artifactId>threetenbp</artifactId>
<version>1.3.2</version>
</dependency>
该后端在ThreeTenABP项目中进一步适用于Android。见How to use ThreeTenABP in an Android project
OffsetDateTime
可以简化示例代码。标准ISO 8601格式的输入数据可以由OffsetDateTime
类直接解析。因此需要定义格式化模式。
OffsetDateTime odt = OffsetDateTime.parse( "2015-01-12T05:00:00.000+0000" ) ;
java.util.Date utilDate = java.util.Date.from( odt.toInstant() ) ;
如果你坚持的话,或者在一行中。
java.util.Date utilDate = java.util.Date.from( OffsetDateTime.parse( "2015-01-12T05:00:00.000+0000" ).toInstant() );
当然,抓住DateTimeParseException
获取无效输入。
答案 2 :(得分:1)
Edit:As @BasilBourque mentioned this new [Java8 Date api][1].
答案 3 :(得分:1)
具有此类名称的类是java.time
和java.time.format
包中JDK 8+的一部分。