2013-03-11 17 views

答えて

83

Joda DateTimeJava Dateを変換するには: -

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

そしてその逆: - 必要に応じて、TimeZone

Date dateNew = dateTime.toDate(); 

: -

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

'DateTime'への変換では、システムのデフォルトのタイムゾーンが使用されます。時間帯を使用する変換は、奇妙な選択であるIMOの開始日をとります。 'DateTime'は既に*タイムゾーンを知っているので、変更したいのは変です - * Date *から* DateTimeに変換するときにゾーンを指定する方がはるかに意味があります。 –

+2

皆様お返事ありがとうございます – Time

+0

'java.utiL。Date'は 'java.util.TimeZone'について実際には知りません。 'TimeZone zone = dateTime.getZone()。toTimeZone();' – bowmore

0

のJava日から変換するにはジョーダへの日時:
Date to DateTimeから変換するには、時間帯を指定する必要があります。
java.util DateからJoda Time of Dateに変換するには、java.utilの日付とタイムゾーンをJoda Time of Dateのコンストラクタに渡すだけです。 Javaの日付に日付のジョダ時間へ変換する

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.utilの日付を返します方法toDate()を持っています。詳細Visit Here

6

については

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

あなたが興味を持っているジョダ時間内のどのタイプの指定ではなく、している:

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

DateInstantどちらも、時間帯に関係しています、ここで指定する必要はありません。

それが適用される時間帯に依存するようにそれがLocalDateTime/LocalDate/LocalTimeからDate(またはその逆)に変換する意味がありません。あなたは時間帯を指定せずにDateを変換することができますが、タイムゾーンを指定する必要があり、またはそれは、システムのデフォルトのタイムゾーンを使用しますDateTimeDateから変換することDateTime

をたとえば(あなたは本当にが、私はそれを明確に、それは意図的な選択だことを確認するために明示的に指定したい、をしたい場合。):

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

'LocalTime'は、対話するときにコードを単純化するのに本当に役立ちます'java.util.Date'とテストをしているとき。ありがとう。 –

関連する問題