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

时间:2016-01-26 13:26:12

标签: java date timeunit

好吧,我正试图在时间和我使用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'。

enter image description here

但事实上,在10:00:00和14:30:00之间的差异是4,5小时(十进制)。

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

1 个答案:

答案 0 :(得分:3)

270分钟,如果按小时显示截断到4小时。

请记住,方法convert会返回long,而不是小数值。

来自javadoc

  

将给定单位的给定持续时间转换为此单位。   从细微到较粗粒度的转换截断,所以输了   精确。例如,将999毫秒转换为秒结果   在0。