已取消 - TimeUnit.MINUTES.convert() 方法功能

CANCELED - TimeUnit.MINUTES.convert() method functionality

好吧,我正在尝试区分时间,我正在使用 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));

结果为:'Duration in minutes: 270' 和 'Duration in hours: 4'。

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

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

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

记住方法convertreturns一个long,不是十进制值。

来自javadoc

Convert the given time duration in the given unit to this unit. Conversions from finer to coarser granularities truncate, so lose precision. For example converting 999 milliseconds to seconds results in 0.