Java 以十进制表示法获取天数

Java 以十进制表示法获取天数,java,date,datetime,time,unix-timestamp,Java,Date,Datetime,Time,Unix Timestamp,我试着把两个日期的差值转换成天,用十进制表示法,例如,在我这样做的时候 Date mostRecentDate = dates[0]; Date previousDate = dates[1]; long mostRecentTime = mostRecentDate.getTime(); long previousTime = previousDate.getTime(); long diffInDays = (mostRecentTime - previousTime ) / (100

我试着把两个日期的差值转换成天,用十进制表示法,例如,在我这样做的时候

Date mostRecentDate = dates[0];
Date previousDate = dates[1];

long mostRecentTime = mostRecentDate.getTime();
long previousTime = previousDate.getTime(); 

long diffInDays = (mostRecentTime - previousTime ) / (1000 * 60 * 60 * 24);
这将始终导致总天数,但我希望如果两个日期的差值为两天半,我可以返回2.5天,或者如果差值为6小时,我可以返回0.25天,等等


谢谢

您需要使用double来获得实数差,而不是long

double diffInDays = (mostRecentTime - previousTime ) / (1000 * 60 * 60 * 24);

long类型是整数,当您除以值时,无论答案是什么,它都将转换为整数并删除小数点

而不是long。您需要使用double来获得实数的差值

double diffInDays = (mostRecentTime - previousTime ) / (1000 * 60 * 60 * 24);

long类型是整数,因为您将值除以任何答案,它将转换为整数并删除小数点

数据类型就是问题所在。你可以用双人

            Date[] dates = new Date[2];
        dates[1] = new Date(System.currentTimeMillis()-12*1000*60*60);
        dates[0] = new Date(System.currentTimeMillis());
        Date mostRecentDate = dates[0];
        Date previousDate = dates[1];

        double mostRecentTime = mostRecentDate.getTime();
        double previousTime = previousDate.getTime(); 

        double diffInDays = (mostRecentTime - previousTime ) / (1000 * 60 * 60 * 24);

数据类型就是问题所在。你可以用双人

            Date[] dates = new Date[2];
        dates[1] = new Date(System.currentTimeMillis()-12*1000*60*60);
        dates[0] = new Date(System.currentTimeMillis());
        Date mostRecentDate = dates[0];
        Date previousDate = dates[1];

        double mostRecentTime = mostRecentDate.getTime();
        double previousTime = previousDate.getTime(); 

        double diffInDays = (mostRecentTime - previousTime ) / (1000 * 60 * 60 * 24);

如果你想要小数,就不要用long。你可能想用double,然后把答案四舍五入到你想要的小数位数。如果你想要小数,就不要用long。你可能想用double,然后把答案四舍五入到你想要的小数位数。