我正在从数据库中提取日期和时间。它们存储在单独的字段中,但我想将它们组合成一个 java.util.Date 对象,以适本地反射(reflect)日期/时间。
这是我原来的方法,但它有缺陷。我总是以一个比应该的时间晚 6 小时的日期/时间结束。我认为这是因为时间和日期都有时区偏移,我真的只需要其中之一就有时区偏移。
关于如何执行此操作以提供正确的日期/时间的任何建议?
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 dCal = Calendar.getInstance();
dCal.setTime(date);
Calendar tCal = Calendar.getInstance();
tCal.setTime(time);
dCal.set(Calendar.HOUR_OF_DAY, tCal.get(Calendar.HOUR_OF_DAY));
dCal.set(Calendar.MINUTE, tCal.get(Calendar.MINUTE));
dCal.set(Calendar.SECOND, tCal.get(Calendar.SECOND));
dCal.set(Calendar.MILLISECOND, tCal.get(Calendar.MILLISECOND));
date = dCal.getTime();
关于java - 如何将 java.util.Date 对象与 java.sql.Time 对象结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/344128/