Date
をDateTime
に、またはその逆に変換するにはどうすればよいですか?
例えば。
Date dt = new Date();
これをDateTime
に隠したいと思います。
また
DateTime dtim = new DateTime();
それを日付に変換したいと思います。
これは Joda Time
のDateTime
のことですか?もしそうなら、それは
dateTime.toDate()
Date.getTime()を使用してUTCに変換すると思います。その後、他のオブジェクトでコンストラクタ/セッターを使用します。
スカフマンが上で言ったように
dateTime.toDate()
トリックを行う必要があります。ただし、dateTimeオブジェクトのタイムゾーンがユーザーの現在のタイムゾーンと異なる場合、dateTime.toDate()はユーザーのタイムゾーンで日付オブジェクトを返します。すなわち
DateTime newDate = new DateTime().toDateTime(DateTimeZone.forID("America/Los_Angeles"));
System.out.println(newDate);
System.out.println(newDate.toDate());
これは印刷されます
2017-07-05T14:19:23.294-07:00
2017年7月5日水曜日15:19:23 MDT
私のシステム時間はMDTなので
タイムゾーンを失わずにDateTimeをDateに変換する場合は、最初にDateTimeをJoda LocalDateTimeに変換します。
DateTime dateTimeUtc = new DateTime(); //because my default timezone is UTC
DateTime dateTimeBerlin = dateTimeUtc.withZone(DateTimeZone.forID("Europe/Berlin"));
Date convertedDate = dateTimeBerlin.toLocalDateTime().toDate();