2

我正在寻找一种使用 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)
4

3 回答 3

2

您的base日期时间必须缩短为小时。让我们将此操作的结果称为product。然后加入产品一小时。之后,您需要用base(product-base) 减去产品,这将给出difference.

如果差异小于 61 秒,则您设置产品,否则您离开基地。

编辑:

或者您可以检查您的日期是否有 59 分钟,然后添加一分钟并设置

if(dateTime.getMinuteOfHour() == 59) {
  dateTime.addMinutes(1);
  dateTime.setSecondOfMinute(0);
  dateTime.setMillisOfSecond(0);
}
于 2012-10-04T16:12:57.240 回答
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);
}
于 2012-10-04T16:13:23.747 回答
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));
于 2012-10-04T16:20:19.547 回答