Joda Time Interval没有回复我的期望

时间:2014-07-31 19:50:32

标签: java

我有以下程序

import java.util.*;
import java.text.*;
import org.joda.time.*;


public class ScopeControl {

    public static Interval getInterval() {

        DateTime currDate = new DateTime(2008, 4, 4, 15, 30, 0, 0);
        DateTime epochDate = new DateTime(2000, 1, 1, 12, 0, 0, 0);
        Interval interval = new Interval(epochDate, currDate);
        return interval;
    }

    public static void main(String[] args) {

        double daysBtween  = getInterval().toDurationMillis()/1000/60/60/24;

             StdOut.println(daysBtween);
    }
}

我得到了输出: 3016.0

但我正在寻找的是: 3016.1458333333

我做错了什么?

1 个答案:

答案 0 :(得分:0)

toDurationMillis返回一个long,每个分区都声明为int。因此,Java会将int转换为long并执行返回long的分区。结果将结果转换为double。要告诉Java使用双精度执行表达式,请将表达式的任何组件声明为double。例如:

double daysBtween  = getInterval().toDurationMillis()/1000d/60d/60d/24d;