Я хочу преобразовать java.util.Date
в JodaTime
, чтобы выполнять вычитания между датами. Есть ли хороший краткий способ преобразования из Date
в JodaTime
?
Преобразование из java.util.date в JodaTime
Ответы (2)
java.util.Date date = ...
DateTime dateTime = new DateTime(date);
Однако убедитесь, что date
не является null
, иначе оно будет вести себя как new DateTime()
— мне действительно это не нравится.
person
skaffman
schedule
18.02.2011
В общем:
DateTime dateTime = date==null?null:new DateTime(date);
- person Joeri Hendrickx; 18.02.2011
+1, иначе он действует как new DateTime() - мне это действительно не нравится.
- person reevesy; 27.04.2012
@JoeriHendrickx Старый поток, но вы не имеете в виду DateTime dateTime = date == null ? новый DateTime (): новый DateTime (дата); ? Просто интересно... тх
- person Babajide Prince; 06.05.2013
@BabajidePrince Нет; тогда вы получите то же значение, что и new DateTime(null), чего мы и хотели избежать. Выражение предназначено для сохранения значения null как значения null, что имеет смысл в большинстве ситуаций.
- person Joeri Hendrickx; 08.05.2013
Имейте в виду, что Java Date не зависит от TimeZone, в то время как Joda DateTime имеет хронологию.
- person Cristian Vrabie; 26.07.2013
Да, раз или два, если null действует как new DateTime(), это вызвало у меня немного раздражения...
- person buzzsawddog; 14.11.2013
Как правило, лучше указать часовой пояс, чем полагаться на неявное значение по умолчанию. Если вы опустите часовой пояс, часовой пояс 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
Меня только что укусило проходящее нулевое поведение, и я вспомнил, что видел это.
- 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
@skaffman, если вы хотите избежать нулевых дат, вы можете вместо этого использовать date.getTime(). Вы получите исключение нулевого указателя, однако это может быть лучше, чем молчаливый сбой.
- person Heathen; 18.02.2011
Интересно, почему они просто не перегрузили свой конструктор для этих объектов.
- person Pieter De Bie; 23.10.2015
@PieterDeBie - потому что система универсальная. Вы можете зарегистрировать свои собственные типы объектов для преобразования в них или из них.
- person Jules; 30.04.2017