2013-03-11 16 views

Odpowiedz

83

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(); 
+5

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'. –

+2

Dziękuję wam wszystkim – Time

+0

'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

0

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

6

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); 
+0

' LocalTime' naprawdę pomaga w upraszczaniu kodu podczas interakcji z 'java.util.Date' i podczas wykonywania testów. Dzięki. –