Ich ziehe ein Datum und eine Uhrzeit aus einer Datenbank zurück. Sie werden in separaten Feldern gespeichert, aber ich möchte sie zu einem java.util.Date-Objekt kombinieren, das das Datum/die Zeit entsprechend wiedergibt.Wie kombiniere ich ein java.util.Date-Objekt mit einem java.sql.Time-Objekt?
Hier ist mein ursprünglicher Ansatz, aber es ist fehlerhaft. Ich habe immer ein Datum/eine Uhrzeit, die 6 Stunden vergehen, wie es sein sollte. Ich denke, das liegt daran, dass die Zeit einen Zeitzonen-Versatz hat und das Datum, und ich brauche wirklich nur einen von ihnen, um die Zeitzone zu versetzen.
Irgendwelche Vorschläge, wie dies zu tun ist, damit es mir das richtige Datum/Zeit gibt?
import java.sql.Time;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang.time.DateUtils;
public static Date combineDateTime(Date date, Time time)
{
if (date == null)
return null;
Date newDate = DateUtils.truncate(date, Calendar.DATE);
if (time != null)
{
Date t = new Date(time.getTime());
newDate = new Date(newDate.getTime() + t.getTime());
}
return newDate;
}
Calendar.getInstance() erzeugt eine neue Instanz des Kalenders. Der Kalender ist sehr schwer und nicht threadsicher. Obwohl dies technisch eine korrekte Vorgehensweise ist, gibt es viel bessere Möglichkeiten, dies zu tun. –
Wenn es einen besseren Weg gibt, könnten Sie es bitte posten? – ScArcher2
Nun, wenn Sie Bedenken haben, zu viele Kalender zu erstellen, können Sie eine für den Datumsteil und eine für die Zeit erstellen und sie nur mit dCal.setTime (date) und tCal.setTime (time) zurücksetzen; –