2013-03-11 126 views

回答

83

Java Date轉換爲Joda DateTime: -

Date date = new Date(); 
DateTime dateTime = new DateTime(date); 

反之亦然: -

Date dateNew = dateTime.toDate(); 

隨着TimeZone,如果需要的話: -

DateTime dateTimeNew = new DateTime(date.getTime(), timeZone); 
Date dateTimeZone = dateTime.toDateTimeAtStartOfDay(timeZone).toDate(); 
+5

您轉換爲'DateTime'使用系統默認時區 - 您應該明確地說。而你*的轉換使用時區需要一天的開始,這是一個奇怪的選擇國際海事組織。 'DateTime'已經*知道*時區,所以想改變它是很奇怪的 - 從* Date *轉換*到DateTime時指定區域更有意義。 – 2013-03-11 07:39:36

+2

感謝各位 – Time 2013-03-11 08:04:26

+0

'java.utiL。Date'實際上並不知道java.util.TimeZone。因此,如果你需要的話,你必須在一個單獨的變量中得到'TimeZone',像這樣:'TimeZone zone = dateTime.getZone()。toTimeZone();' – bowmore 2013-03-11 08:09:32

0

從Java日期轉換到Joda時間:
將日期轉換爲需要指定的DateTime時區。
要從java.util Date轉換爲Joda Time of Date,只需將java.util Date和時區傳遞給Joda Time of Date的構造函數即可。

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

轉換從約達時間日期到Java日期:
對於相反的情況喬達日期時間有一個方法toDate()將返回java.util中的日期。

DateTime jodaDate = new DateTime(); 
java.util.Date date = jodaDate.toDate(); 

更多細節Visit Here

6

您還沒有指定你感興趣,其中約達時間內的類型,但:

Instant instant = ...; 
Date date = instant.toDate(); 
instant = new Instant(date); 
// Or... 
instant = new Instant(date.getTime()); 

無論Date也不Instant都涉及到不同時區,所以沒有必要在這裏指定一個。

它沒有意義的轉換從LocalDateTime/LocalDate/LocalTimeDate(或反之),因爲這將取決於時間區被應用。

隨着DateTime可以轉換爲一個Date沒有指定時區,而是從Date轉換爲DateTime應指定的時區,否則將使用系統默認的時區。 (如果你真的的是,我會明確指定它說清楚,這是一個深思熟慮的選擇。)

例如:

DateTimeZone zone = DateTimeZone.forID("Europe/London"); 
Date date = ...; 
DateTime dateTime = new DateTime(date.getTime(), zone); 
+0

'LocalTime'確實有助於在交互時簡化代碼用'java.util.Date'和做測試的時候。謝謝。 – 2016-07-07 17:22:45

相關問題