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


249

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

Ответы:


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

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


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 - потому что система является общей. Вы можете зарегистрировать свои собственные типы объектов для преобразования в или из.
Жюль
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.