为什么2个日期之间的天数不正确?

时间:2015-09-25 20:02:18

标签: java linux date

我目前正在尝试获取两个日期之间的天数。

Date1 : 21-JAN-15

Date2 : 23-JUL-15

在我的本地eclipse tomcat服务器(在印度),我得到的天数为:183,代码如下:

Calendar cal1 = new GregorianCalendar();
Calendar cal2 = new GregorianCalendar();

Date date1 = new Date("21-JAN-15");
Date date2 = new Date("23-JUL-15");

cal1.setTime(date1);
cal2.setTime(date2);

System.out.println("Days= "+daysBetween(cal1.getTime(),cal2.getTime()));

public int daysBetween(Date d1, Date d2){
         return (int)( (d2.getTime() - d1.getTime()) / (1000 * 60 * 60 * 24));
 }

当我将相同的java文件复制到linux服务器并使用javacjava命令在那里运行文件时,我得到的差异为:182,这比一天少。

我已使用以下命令确认Linux服务器的默认时区为EDT:date +%z

我在这里很困惑。我的应用程序中没有JODA库,我无法使用它。在本地环境和Linux服务器上获得统一结果需要做哪些更改?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

以下是使用TimeUnit

的解决方案
public static void main(String[] args) {
    Date date1 = new Date("21-JAN-15");
    Date date2 = new Date("23-JUL-15");

    long diffInMillies = date2.getTime() - date1.getTime();

    System.out.println(TimeUnit.MILLISECONDS.toDays(diffInMillies));
}

输出:

  

182