Estoy retirando una fecha y una hora de una base de datos. Se almacenan en campos separados, pero me gustaría combinarlos en un objeto java.util.Date que refleje la fecha/hora de forma adecuada.¿Cómo combino un objeto java.util.Date con un objeto java.sql.Time?
Aquí está mi enfoque original, pero está defectuoso. Siempre termino con una fecha/hora que es de 6 horas de lo que debería ser. Creo que esto se debe a que Time tiene un offset de zona horaria, así como la fecha, y realmente solo necesito que uno de ellos tenga el desplazamiento de la zona horaria.
¿Alguna sugerencia sobre cómo hacer esto para que me dé la fecha/hora correcta?
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() crea una nueva instancia de calendario cada llamada. El calendario es muy pesado y no es seguro para subprocesos. Si bien esto es técnicamente una forma correcta de hacerlo, hay formas mucho mejores de hacerlo. –
Si hay una mejor manera, ¿podría publicarlo? – ScArcher2
Bueno, si le preocupa crear demasiados calendarios, puede crear uno para la parte de la fecha y uno para el tiempo, y simplemente continúe reiniciándolos con dCal.setTime (date) y tCal.setTime (time); –