Java:日期差异

rah*_*hul 1 java date

我正在使用Java开发日期.我发现两个日期之间的区别.

public static void main(String[] args) {
    final Date futDate = new GregorianCalendar(2012, 8, 15, 0, 0, 0).getTime();

    final Date currentDate = new GregorianCalendar().getTime();

    long diff = Math.round((futDate.getTime() - currentDate.getTime()) / 1000);

    System.out.println(diff / 86400 + " days");
    System.out.println((diff % 86400) / 3600 + " hrs");
    System.out.println(((diff % 86400) % 3600) / 60 + " mins");
    System.out.println((((diff % 86400) % 3600) % 60) % 60 + " secs");
}
Run Code Online (Sandbox Code Playgroud)

输出:

31 days
8 hrs
37 mins
30 secs
Run Code Online (Sandbox Code Playgroud)

即使日期差异小于一天,输出也超过31天.

dan*_*uch 8

8不是当前月份数:)

月份从0开始编号

Java的日期很痛苦,所以我建议看看http://joda-time.sourceforge.net/


duf*_*ymo 5

更好的是,使用内置常量:

Calendar.AUGUST 
Run Code Online (Sandbox Code Playgroud)