時刻と日付の変数を DateTime に変換する方法はありますか?
2 つの DateTime 変数の間に期間があります。その期間の各 Date について、開始 DateTime と終了 DateTime でその Date に期間を格納したいので、1 日は DateTime で定義された複数の期間を持つことができます。
Date と Time を DateTime に組み合わせる方法がわかりません。
前もって感謝します!
プレーン JavaDate
とJoda-Time DateTime
が目的にかなうはずです。
Date date = new Date(); // java.util.Date; - This date has both the date and time in it already.
DateTime dateTime = new DateTime(date);
Joda-Time の詳細については、こちらをご覧ください。
2 つのString
オブジェクトがあり、一方が を保持しDate
、もう一方が を保持しているTime
場合、2 つの文字列を結合し、SDFを使用してそれを解析し、Date
オブジェクトを取得してから に変換できますDateTime
。
これを使用して修正しました:
public DateTime dateAndTimeToDateTime(java.sql.Date date, java.sql.Time time) {
String myDate = date + " " + time;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date utilDate = new java.util.Date();
try {
utilDate = sdf.parse(myDate);
} catch (ParseException pe){
pe.printStackTrace();
}
DateTime dateTime = new DateTime(utilDate);
return dateTime;
}
この質問が少し古く、すでに回答されていたとしても、満足のいく解決策を見つけることができませんでした. この問題の最善の方法は、おそらく次のコードです (解析や例外処理は必要ありません)。
public DateTime dateAndTimeToDateTime(java.sql.Date date, java.sql.Time time) {
DateTime t = new DateTime(time);
return new DateTime(date).withTime(t.getHourOfDay(), t.getMinuteOfHour(), t.getSecondOfMinute(), t.getMillisOfSecond());
}
日付と時刻のインスタンスを別々に構築する方法を見つけることができると確信しています。
ただし、datetime オブジェクト自体では、次のように指定できます。
dateTimeObject = dateTimeObject.withHourOfDay(12);
dateTimeObject = dateTimeObject.withMinuteofHour(59);
dateTimeObject = dateTimeObject.withSecondOfMinute(59);
お役に立てれば!
Java の最新の日付と時刻の API である java.time を使用すると、これは単純明快です。
LocalTime time = LocalTime.of(23, 45);
LocalDate date = LocalDate.of(2019, Month.NOVEMBER, 23);
LocalDateTime combined = date.atTime(time);
System.out.println(combined);
出力は次のとおりです。
2019-11-23T23:45
あなたが Joda-Time について尋ねたことは知っています。ただし、Joda-Time のホームページには次のように書かれています。
Joda-Time は、大部分が「完成した」プロジェクトであると見なされていることに注意してください。大きな機能強化は予定されていません。
java.time
Java SE 8 を使用している場合は、 (JSR-310)に移行してください。