2016-08-19 68 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爲無效輸入。