【发布时间】:2012-07-13 02:01:35
【问题描述】:
import java.util.GregorianCalendar;
public class FullYear {
public static void main(String[] args) {
GregorianCalendar cal1 = new GregorianCalendar(2011,2,9);
GregorianCalendar cal2 = new GregorianCalendar(2011,2,12);
long ms1 = cal1.getTime().getTime();
long ms2 = cal2.getTime().getTime();
long difMs = ms2-ms1;
long msPerDay = 1000*60*60*24;
System.out.println(difMs);
System.out.println(msPerDay);
double days = difMs / msPerDay;
System.out.println(days);
GregorianCalendar cal11 = new GregorianCalendar(2011,2,9);
GregorianCalendar cal22 = new GregorianCalendar(2011,2,19);
long ms11 = cal11.getTime().getTime();
long ms22 = cal22.getTime().getTime();
long difMs1 = ms22-ms11;
long msPerDay1 = 1000*60*60*24;
System.out.println(difMs1);
System.out.println(msPerDay1);
double days2 = difMs1 / msPerDay1;
System.out.println(days2);
}
}
这会输出 3.0 和 9.0(我希望是 10!!)。这会进行整数除法,因此 9.0 实际上是 9.95。但是,我的问题是……
- 2 月 9 日和 2 月 19 日之间的差异是 860400000 毫秒,即 239 小时。
- 2 月 9 日和 2 月 12 日之间的差异是 259200000 毫秒,即 72 小时。
第一个差异不应该是 240 小时吗?
【问题讨论】:
-
在日历对象上设置小时、分钟、秒和毫秒(全为 0),然后重新计算结果。
-
我得到 3.0 和 10.0 使用 Java 7u2 运行您的代码