我尝试使用Instant.truncatedTo截断日期,但似乎它不允许截断超过一天的持续时间。我想要做的是使用特定的时间间隔截断日期。例如:
For 1hour interval, 2014-10-18T11:30:52.560Z should become: 2014-10-18T11:00:00.000Z
For 1day interval, 2014-10-18T11:30:52.560Z should become: 2014-10-18T00:00:00.000Z
For 1month interval, 2014-10-18T11:30:52.560Z should become: 2014-10-01T00:00:00.000Z
For 6month interval, 2014-10-18T11:30:52.560Z should become: 2014-07-01T00:00:00.000Z
因此,更像是将日期延迟到特定的时间间隔。
我实际上是使用时间戳值来划分时间戳间隔((dateTimestamp / intervalTimestamp)* intervalTimestamp)但是在使用月份时,没有固定的时间戳值,因为月份的天数可能会改变,因此它不起作用几个月。
答案 0 :(得分:1)
您可以编写自己的功能:
public LocalDateTime truncateTo(LocalDateTime dt, Time interval) {
switch(interval) {
case MONTH_6:
if(dt.getMonthValue() > 6)
dt = dt.withMonth(7);
else
dt = dt.withMonth(1);
case MONTH:
dt = dt.withDayOfMonth(1);
case DAY:
dt = dt.withHour(0);
case HOUR:
dt = dt.withMinute(0);
dt = dt.withSecond(0);
dt = dt.withNano(0);
break;
}
return dt;
}