Преобразование из java.util.date в JodaTime

Я хочу преобразовать java.util.Date в JodaTime, чтобы выполнять вычитания между датами. Есть ли хороший краткий способ преобразования из Date в JodaTime?


person Krt_Malta    schedule 18.02.2011    source источник


Ответы (2)


java.util.Date date = ...
DateTime dateTime = new DateTime(date);

Однако убедитесь, что date не является null, иначе оно будет вести себя как new DateTime() — мне действительно это не нравится.

person skaffman    schedule 18.02.2011
comment
В общем: DateTime dateTime = date==null?null:new DateTime(date); - person Joeri Hendrickx; 18.02.2011
comment
+1, иначе он действует как new DateTime() - мне это действительно не нравится. - person reevesy; 27.04.2012
comment
@JoeriHendrickx Старый поток, но вы не имеете в виду DateTime dateTime = date == null ? новый DateTime (): новый DateTime (дата); ? Просто интересно... тх - person Babajide Prince; 06.05.2013
comment
@BabajidePrince Нет; тогда вы получите то же значение, что и new DateTime(null), чего мы и хотели избежать. Выражение предназначено для сохранения значения null как значения null, что имеет смысл в большинстве ситуаций. - person Joeri Hendrickx; 08.05.2013
comment
Имейте в виду, что Java Date не зависит от TimeZone, в то время как Joda DateTime имеет хронологию. - person Cristian Vrabie; 26.07.2013
comment
Да, раз или два, если null действует как new DateTime(), это вызвало у меня немного раздражения... - person buzzsawddog; 14.11.2013
comment
Как правило, лучше указать часовой пояс, чем полагаться на неявное значение по умолчанию. Если вы опустите часовой пояс, часовой пояс JVM по умолчанию назначается новому объекту DateTime. Я предлагаю это… DateTime dateTime = new DateTime( date, DateTimeZone.forID( "Europe/Paris" ) );. Или для UTC используйте константу… DateTime dateTime = new DateTime( date, DateTimeZone.UTC ); - person Basil Bourque; 05.07.2014
comment
Меня только что укусило проходящее нулевое поведение, и я вспомнил, что видел это. - person Harry; 04.02.2017

http://joda-time.sourceforge.net/quickstart.html

Каждый класс datetime предоставляет множество конструкторов. К ним относится конструктор объектов. Это позволяет создавать, например, DateTime из следующих объектов:

* Date - a JDK instant
* Calendar - a JDK calendar
* String - in ISO8601 format
* Long - in milliseconds
* any Joda-Time datetime class
person Heathen    schedule 18.02.2011
comment
@skaffman, если вы хотите избежать нулевых дат, вы можете вместо этого использовать date.getTime(). Вы получите исключение нулевого указателя, однако это может быть лучше, чем молчаливый сбой. - person Heathen; 18.02.2011
comment
Интересно, почему они просто не перегрузили свой конструктор для этих объектов. - person Pieter De Bie; 23.10.2015
comment
@PieterDeBie - потому что система универсальная. Вы можете зарегистрировать свои собственные типы объектов для преобразования в них или из них. - person Jules; 30.04.2017