原因在于使用org.apache.commons.lang3.time.DateUtils.truncate
方法时在转换DST(夏日节约时间 Daylight Saving Time)将出现错误,而且采用Instant的转换方式比DateUtils.truncate转换更富有效率。
不再使用:
public Date trunc(Date date) {
return DateUtils.truncate(date, Calendar.SECOND);
}
替换成:
public Date trunc(Date date) {
Instant instant = date.toInstant();
instant = instant.truncatedTo(ChronoUnit.SECONDS);
return Date.from(instant);
}
PS
所谓「夏日节约时间」Daylight Saving Time(简称D.S.T.),是指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用,在英国则称为夏令时间(Summer Time)