2016-08-19 4 views
0

Я использую этот код для преобразования String в java Date Object. Какую зависимость maven мне нужно использовать для DateTimeFormatter и ZonedDateTime.Какую зависимость 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

Try [Joda Time] (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 немного отличается.

Редактировать: как сказал Василий Бурк, не рекомендуется использовать JodaTime, но вместо этого использовать описанный backport в своем посте.

+0

Нет, команда проекта Joda-Time советует перейти на java.time. Сейчас Joda-Time находится в режиме обслуживания.См. [Мой ответ] (http://stackoverflow.com/a/39043704/642706) для обратных портов для Java 6 и 7. –

+0

Я этого не знал, поэтому не рекомендуется использовать «старый» «версия JodaTime, построенная с помощью java7? – lepak

+0

Joda-Time по-прежнему активно поддерживается. Обязательно обновите свою последнюю версию Joda-Time для исправления ошибок и обновлений в своей базе данных «tz» часовых поясов (часто меняются правила зоны). Начните изучать java.time и начните использовать его, когда это удобно. Вы можете использовать Joda-Time и java.time в разных частях вашего проекта; просто будьте осторожны с операторами 'import', поскольку некоторые классы имеют одни и те же имена. –

1

Классы с такими названиями являются частью JDK 8+ в java.time и java.time.format пакетами.

2

Не Joda времени

Некоторые другие ответы неверны в предложении библиотеки Joda-Time. Этот исходный код явно использует классы java.time, встроенные в Java 8 и более поздние версии.

java.time

java.time структура является преемником Joda-Time, определяется JSR 310, и во главе с тем же человеком, как кто создал Joda времени, Стивен Колборн.

Резервные порты

Чтобы ответить на этот вопрос, если вы используете Java 6 или 7, использовать проект ThreeTen-Backport. Большая часть функций java.time была восстановлена ​​обратно.

В настоящее время зависимость Maven является:

<dependency> 
    <groupId>org.threeten</groupId> 
    <artifactId>threetenbp</artifactId> 
    <version>1.3.2</version> 
</dependency> 

Это обратно-порт был дополнительно адаптирован для Android в проекте ThreeTenABP. См 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 для недействительных входов.