Перетворити з 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);
Joeri Hendrickx

121
+1 для "в іншому випадку він діє як новий DateTime () - мені це дуже не подобається."
reevesy

1
@BabajidePrince Ні; тоді ви отримаєте таке ж значення, як і новий DateTime (null), саме цього ми хотіли уникнути. Вираз покликаний підтримувати null як null, що є сенсом у більшості ситуацій.
Joeri Hendrickx

4
Пам’ятайте, що Java Date не залежить від TimeZone, тоді як Joda DateTime має хронологію.
Крістіан Врабі

1
Так, час чи два, якщо нульовий акт, як новий DateTime (), викликав у мене трохи неприємності ...
buzzsawddog

13

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

Кожен клас дат містить різноманітні конструктори. До них належить конструктор об'єктів. Це дозволяє сконструювати, наприклад, 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.