Конвертировать из java.util.date в JodaTime

249

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

Krt_Malta
источник

Ответы:

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

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

skaffman
источник
9
Итак, в основном:DateTime dateTime = date==null?null:new DateTime(date);
Джори Хендриккс
121
+1 за «в противном случае он действует как новый DateTime () - мне действительно это не нравится».
Reevesy
1
@BabajidePrince Нет; тогда вы получите то же значение, что и новый DateTime (null), чего мы и хотели избежать. Выражение предназначено для поддержания нулевого значения как нулевого, что имеет смысл в большинстве ситуаций.
Джоэри Хендрикс
4
Помните, что Java Date не зависит от времени, а Joda DateTime имеет хронологию.
Кристиан Враби
1
Да, раз или два, если ноль действует как новый DateTime (), вызывает у меня некоторое раздражение ...
buzzsawddog
13

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
язычник
источник
16
@skaffman, если вы хотите избежать нулевых дат, вы можете использовать date.getTime (). Вы получите исключение нулевого указателя, однако это может быть лучше, чем молчаливая ошибка.
Язычник
2
Интересно, почему они не просто перегрузили свой конструктор для этих объектов.
Питер де Би
1
@PieterDeBie - потому что система является общей. Вы можете зарегистрировать свои собственные типы объектов для преобразования в или из.
Жюль