Konwertuj z java.util.date na JodaTime


249

Chcę przekonwertować java.util.Datena JodaTime, aby przeprowadzać odejmowanie między datami. Czy istnieje dobry zwięzły sposób przekonwertować z Datedo JodaTime?

Odpowiedzi:


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

Upewnij datesię jednak null, że nie jest , w przeciwnym razie zachowuje się tak new DateTime()- naprawdę tego nie lubię.


9
Więc w zasadzie:DateTime dateTime = date==null?null:new DateTime(date);
Joeri Hendrickx

121
+1 dla „w przeciwnym razie zachowuje się jak nowy DateTime () - naprawdę tego nie lubię”.
reevesy

1
@BajajidePrince No; wtedy otrzymasz tę samą wartość, co nowy DateTime (null), a dokładnie tego chcieliśmy uniknąć. Wyrażenie ma zachować wartość zerową jako zerową, co ma sens w większości sytuacji.
Joeri Hendrickx

4
Należy pamiętać, że Java Date jest niezależna od strefy czasowej, podczas gdy Joda DateTime ma chronologię.
Cristian Vrabie

1
Tak, raz lub dwa, jeśli null działa jak new DateTime (), wywołuje u mnie trochę anoyingness ...
buzzsawddog

13

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

Każda klasa datetime zapewnia różnorodność konstruktorów. Należą do nich konstruktor obiektów. Dzięki temu można na przykład skonstruować DateTime z następujących obiektów:

* Date - a JDK instant
* Calendar - a JDK calendar
* String - in ISO8601 format
* Long - in milliseconds
* any Joda-Time datetime class

16
@skaffman, jeśli chcesz uniknąć dat zerowych, możesz zamiast tego użyć date.getTime (). Otrzymujesz wyjątek wskaźnika zerowego, który może być lepszy niż cicha awaria.
Poganie

2
Zastanawiam się, dlaczego nie przeciążili tylko swojego konstruktora dla tych obiektów.
Pieter De Bie,

1
@PieterDeBie - ponieważ system jest ogólny. Możesz zarejestrować własne typy obiektów, aby uzyskać konwersję do lub z.
Jules
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.