以毫秒为单位计算日期的代码是:
//installment date converted to milliseconds
long localDateInstall = installDate.getTime();
//installment date converted to milliseconds
long localDatePay = payDate.getTime();
Run Code Online (Sandbox Code Playgroud)
在这里我计算这些日期之间的天数:
days=Math.abs((localDatePay - localDateInstall))/86400000;
Run Code Online (Sandbox Code Playgroud)
当我想测试它,我进入1/Jan/2012了localDateInstall和1/Feb/2012的localDatePay.结果是:29天.问题是什么?谢谢
Rya*_*art 13
反例:
public static void main(String[] args) throws Exception {
SimpleDateFormat format = new SimpleDateFormat("d MMM yyyy");
Date installDate = format.parse("1 Jan 2012");
Date payDate = format.parse("1 Feb 2012");
long localDatePay = payDate.getTime();
long localDateInstall = installDate.getTime();
long days = Math.abs(localDatePay - localDateInstall) / 86400000;
System.out.println(days);
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,输出为"31",如预期的那样.问题出在你没告诉我们的地方.在黑暗中拍摄:您可能正在构建您的测试输入,如下所示:
Date installDate = new Date(2012, 1, 1);
Date payDate = new Date(2012, 2, 1);
Run Code Online (Sandbox Code Playgroud)
可悲的是,这在两个方面是错误的.首先,"年"论证应该是" 减去1900年的年份 ".其次,1月是0月,而不是1月.有了这两个日期作为输入,你的确会得到29的答案,因为你实际上要求的是它在3912年2月的天数,这是闰年.
| 归档时间: |
|
| 查看次数: |
6240 次 |
| 最近记录: |