-1

好吧,我正在尝试区分时间,而我正在使用TimeUnit.XXX.convert().

这是我的一段测试代码:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");

        Date d1 = new Date();

        Date d2 = new Date();

try {
            d1 = sdf.parse("08/11/2015 10:00:00");
            d2 = sdf.parse("08/11/2015 14:30:00");
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println("Duration in minutes: "  + TimeUnit.MINUTES.convert(d2.getTime()-d1.getTime(), TimeUnit.MILLISECONDS));
        System.out.println("Duration in hours: "    + TimeUnit.HOURS.convert(d2.getTime()-d1.getTime(), TimeUnit.MILLISECONDS));

结果是:“以分钟为单位的持续时间:270”和“以小时为单位的持续时间:4”。

在此处输入图像描述

但实际上 10:00:00 和 14:30:00 之间的差异是 4.5 小时(十进制)。

这是一个错误还是我做错了什么?

4

1 回答 1

3

如果以小时表示,则 270 分钟将被截断为 4 小时。

请记住,该方法convert 返回一个long,而不是十进制值。

来自javadoc

将给定单位中的给定持续时间转换为此单位。 从细粒度到粗粒度的转换会截断,因此会丢失精度。例如,将 999 毫秒转换为秒会得到 0。

于 2016-01-26T13:28:24.973 回答