Czy można to zrobić? Jeśli tak, to w jaki sposób mogę przeprowadzić konwersję z Joda-Time na Date i odwrotnie?Jak przekonwertować Joda-Time DateTime na java.util.Date i na odwrót?
Odpowiedz
Aby przekonwertować Java Date
do Joda DateTime
: -
Date date = new Date();
DateTime dateTime = new DateTime(date);
i vice versa: -
Date dateNew = dateTime.toDate();
Z TimeZone
, jeśli wymagane: -
DateTime dateTimeNew = new DateTime(date.getTime(), timeZone);
Date dateTimeZone = dateTime.toDateTimeAtStartOfDay(timeZone).toDate();
Konwersja na 'DateTime' używa domyślnej strefy czasowej systemu - powinieneś powiedzieć to wprost. A twoja konwersja, która * nie * używa strefy czasowej, zaczyna się od początku, co jest dziwnym wyborem IMO. 'DateTime' już * zna * strefę czasową, więc to dziwne, że chcesz ją zmienić - bardziej sensowne jest określenie strefy podczas konwersji * z *' Date' * na * 'DateTime'. –
Dziękuję wam wszystkim – Time
'java.utiL.Data 'faktycznie nie wie o' java.util.TimeZone'. Więc będziesz musiał pobrać 'TimeZone' w oddzielnej zmiennej, jeśli będziesz jej potrzebować:' Strefa czasowa = dateTime.getZone(). ToTimeZone(); ' – bowmore
przekonwertować z Java Data do Joda Data:
Aby przekonwertować z daty na datę, należy określić strefę czasową.
Aby przekonwertować z java.util Data do Joda Czas należy przekazać java.util Data i strefa czasowa do konstruktora Joda Data.
java.util.Date date = new java.util.Date(System.currentTimeMillis());
DateTimeZone dtz = DateTimeZone.getDefault();// Gets the default time zone.
DateTime dateTime = new DateTime(date.getTime(), dtz);
przekonwertować z Joda czas Data Java Data:
Na odwrotnym przypadku Joda DateTime ma metodę toDate()
która zwróci java.util Data.
DateTime jodaDate = new DateTime();
java.util.Date date = jodaDate.toDate();
Aby uzyskać więcej informacji Visit Here
Nie podano jaki typ ciągu Joda razem jesteś zainteresowany, ale:
Instant instant = ...;
Date date = instant.toDate();
instant = new Instant(date);
// Or...
instant = new Instant(date.getTime());
Ani Date
ani Instant
związane są strefami czasowymi, więc nie ma potrzeby określania tutaj.
nie ma sensu konwersji z LocalDateTime
/LocalDate
/LocalTime
do Date
(lub odwrotnie), gdyż może to zależeć od strefy czasowej stosowane.
Z DateTime
można przekonwertować doDate
bez określania strefę czasową, ale przekonwertować z Date
do DateTime
należy określić strefę czasową, czy będzie korzystał z domyślnego systemu strefę czasową. (Jeśli naprawdę chcą, że bym go określić jednoznacznie, aby było jasne, że jest to świadomy wybór.)
Na przykład:
DateTimeZone zone = DateTimeZone.forID("Europe/London");
Date date = ...;
DateTime dateTime = new DateTime(date.getTime(), zone);
' LocalTime' naprawdę pomaga w upraszczaniu kodu podczas interakcji z 'java.util.Date' i podczas wykonywania testów. Dzięki. –
Widziałeś Joda [konstruktorów DateTime] (http: //joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html#DateTime%28long%29)? Czy uważasz, że ktoś może być odpowiedni? – vikingsteve