2016-08-19 41 views
0

我正在使用此代码将字符串转换为java Date对象。我需要为DateTimeFormatter和ZonedDateTime使用maven依赖项。我们可以使用哪种maven依赖关系为DateTimeFormatter

Date date = Date.from(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss‌​.SSSZ").parse("2015-‌​01-12T05:00:00.000+0‌​000", ZonedDateTime::from).toInstant()) 

任何人都可以请帮我...

+0

尝试[乔达时间](https://mvnrepository.com/artifact/joda-time/joda-time) – DimaSan

回答

1
Edit:As @BasilBourque mentioned this new [Java8 Date api][1]. 
+0

在Java 7中, \t 如何转换字符串“2015-01-12T05:00:00.000+ 0000“来记录日期对象? – dev777

+0

DateTimeFormatter fmt = ISODateTimeFormat.dateTime(); LocalDate date = fmt.parseLocalDate(dateStr); – kuhajeyan

+1

不,问题中的代码使用java.time类,* not * Joda-Time。 Joda-Time团队现在建议迁移到java.time。 –

4

必须使用Java8使用这些类,它们在这个版本中加入。如果您还没有使用Java8,则可以使用JodaTime(http://www.joda.org/joda-time/),但API有点不同

编辑:如Basil Bourque所述,建议不要使用JodaTime,而应使用描述的backport在他的职位。

+0

不,Joda-Time项目团队建议迁移到java.time。 Joda-Time现在处于维护模式。请参阅[我的答案](http://stackoverflow.com/a/39043704/642706)以获取Java 6和7的后端端口。 –

+0

我不知道,所以不建议使用“old “使用java7构建的JodaTime版本? – lepak

+0

Joda-Time仍在积极维护。请务必更新其最新版本的Joda-Time以修复bug并更新其'tz'时区数据库(区域规则经常更改)。开始学习java.time并在方便时开始使用它。您可以在项目的不同部分使用Joda-Time和java.time,只需要注意'import'语句,因为有些类共享相同的名称。 –

1

具有此类名称的类是java.timejava.time.format包中的JDK 8+的一部分。

2

不乔达时间

一些其他的答案都在暗示乔达时库不正确。该源代码显然使用Java 8及更高版本中内置的java.time类。

java.time

的java.time框架的前身是乔达时间,由JSR 310定义的,并且由同一人作为谁创造了乔达时,斯蒂芬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+0‌​000") ; 
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+0‌​000").toInstant()); 

当然,赶上DateTimeParseException为无效输入。