java - 为什么 Java 的 Date.getTime() 返回一月份的错误响应?

标签 java date

计算日期(以毫秒为单位)的代码是:

//installment date converted to milliseconds
long localDateInstall = installDate.getTime();

//installment date converted to milliseconds
long localDatePay = payDate.getTime();

这里我计算这些日期之间的天数:

days=Math.abs((localDatePay - localDateInstall))/86400000;

当我想测试它时,我输入 1/Jan/2012 作为 localDateInstall 并输入 1/Feb/2012 作为 localDatePay。结果是:29 天。问题是什么?谢谢

最佳答案

反例:

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);
}

这工作正常,输出是“31”,正如预期的那样。问题出在你没有告诉我们的地方。在黑暗中拍摄:您可能正在像这样构建测试输入:

Date installDate = new Date(2012, 1, 1);
Date payDate = new Date(2012, 2, 1);

遗憾的是,这在两个方面是错误的。首先,“年份”参数应该是“the year minus 1900”。二、January is month 0, not month 1 。将这两个日期作为输入,您确实会得到答案 29,因为您实际上是在询问 3912 年 2 月的天数,这是一个闰年。

关于java - 为什么 Java 的 Date.getTime() 返回一月份的错误响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10569381/

相关文章:

java - java中如何将大字符串保存到xml文件中?

java - 内存中的 Scala/Java Redis

r - 从 Excel 到 R 的日期,平台依赖性

sql-server - 需要帮助在 ColdFusion 中格式化类型 ="datetime-local"(不是冷聚变元素)

java - 通过 JNI C 代码将 PNG 图像作为 BufferedImage 加载到 Java 中

java - 列出多个jar文件的内容

java - 如何使用 spring boot 抑制 url 编码

c# - LINQ to Entities - 比较日期

c# - 获取当月的第一天和最后一天

php - 打印一年中每一天的结果表