我正在寻找一种使用Joda时间库来舍入日期时间值的方法。 只有当间隔在60秒内到达下一个圆形小时时,我才需要这样做。
例如向上舍入:
10/1/2012 10:59:00 => 10/1/2012 11:00:00
10/1/2012 10:59:01 => 10/1/2012 11:00:00
10/1/2012 10:59:59 => 10/1/2012 11:00:00
10/1/2012 10:49:59 => 10/1/2012 10:49:59 (no rounding needed)
答案 0 :(得分:2)
您的base
日期时间必须缩短为几小时。让我们将此操作的结果称为product
。然后加入产品一小时。在此之后,您需要使用base
(产品 - 基础)来减去产品,该产品将提供difference
。
如果差异小于61秒你设置产品,否则你离开基地。
编辑:
或者您可以检查您的日期是否为59分钟,并为其添加一分钟并设置
if(dateTime.getMinuteOfHour() == 59) {
dateTime.addMinutes(1);
dateTime.setSecondOfMinute(0);
dateTime.setMillisOfSecond(0);
}
答案 1 :(得分:1)
您可以在以下代码段中执行以下操作:
DateTime input = new DateTime(2012, 10, 04, 21, 39, 0, 0);
DateTime dateTime = new DateTime();
long diffInSeconds =
dateTime.minus(input.getMillis()).getMillis() / 1000;
if (diffInSeconds <= 60)
{
input = input.plus(diffInSeconds * 1000);
}
答案 2 :(得分:1)
这应该这样做:
DateTime round = new DateTime().withTime(23, 59, 0, 0)
DateTime temp = round.plusMinutes(1);
if(temp.getHourOfDay()!=round.getHourOfDay())
round = new DateTime(temp.withTime(temp.getHourOfDay(),0,0,0));