我正在从数据库中撤回日期和时间.它们存储在单独的字段中,但我想将它们组合成一个适当反映日期/时间的java.util.Date对象.
这是我原来的方法,但它有缺陷.我总是得到一个6小时的日期/时间.我认为这是因为Time有一个时区偏移量和Date,我真的只需要其中一个来获得时区偏移量.
有关如何做到这一点的任何建议,以便它会给我正确的日期/时间?
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; }
Paul Tomblin.. 10
我将日期和时间都放入Calendar对象,然后使用各种Calendar方法从第二个对象中提取时间值并将它们放入第一个对象中.
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();
如果有更好的方法可以请发布吗? (2认同)
Steve McLeod.. 5
在执行这些类型的事情时,请使用Joda Time而不是Java自己的Date类.这是一个非常优越的日期/时间api,使您尝试做的事情非常简单和可靠.
我将日期和时间都放入Calendar对象,然后使用各种Calendar方法从第二个对象中提取时间值并将它们放入第一个对象中.
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();
在执行这些类型的事情时,请使用Joda Time而不是Java自己的Date类.这是一个非常优越的日期/时间api,使您尝试做的事情非常简单和可靠.