【发布时间】:2014-03-16 15:15:37
【问题描述】:
您好,我正在尝试计算两个日期的天数之差。日期是本月 14 日和今天。它应该是 2。但 o/p 始终为 0。 代码:
long today = (new java.util.Date().getTime());
long difference =(long) (today - 1394809789186.0);
long daysdifference = difference/(24*3600*1000);
System.out.println(daysdifference);
o/p: 0.
怎么了?
现在我又做了一个技巧,它给出了完美的答案,不知道上面的代码有什么问题......
SimpleDateFormat df = new SimpleDateFormat("dd.mm.yyyy");
long firstdateseconds = df.parse("14.03.2014").getTime();
long today = df.parse("16.03.2014").getTime();
long difference = (today-firstdateseconds);
long days = (long)(difference/(24*3600*1000));
System.out.println(days);
o/p : 2 // 现在是正确的宾果游戏!
大家怎么了?
【问题讨论】:
-
您应该尝试打印出中间值以查看发生了什么。另外,
1394809789186.0的神奇数字是什么? -
@oli:这是一个毫秒时间戳,对应于 3 月 14 日。
-
@MarcB:是的,我认为是 ;) 但我想知道为什么 OP 有这样的硬编码,而不是简单地明确地构造它。
-
可能是由
difference除以int引起的。 -
如果您使用Joda-Time API,您将永远不必担心此类计算。