毫秒不等于小时

ntl*_*lam 1 java grails groovy datetime date

Date day1 = set_datetime(2017, Calendar.JUNE, 28, 8, 00, 0); 

Date day2 = set_datetime(2017, Calendar.JUNE, 28, 10, 00, 0);

def set_datetime(int year, int month, int day, int hour, int minute, int second) {
        Calendar cal = Calendar.getInstance();
        cal.set(year, month, day, hour, minute, second);
        Date cal_date = cal.getTime();
        return cal_date
    }

println "\t\t (day2.getTime() - day1.getTime()) = " + (day2.getTime() - day1.getTime())
Run Code Online (Sandbox Code Playgroud)

(day2.getTime() - day1.getTime()) = 7199996

为什么不是7200000毫秒?这里有点不对劲.因为当我从毫秒转换为小时时,7199996不是2小时(7200000)

And*_*ner 6

你没有清除毫秒字段.

cal.clear();
Run Code Online (Sandbox Code Playgroud)

cal.set(...);在行之前,或添加

cal.set(Calendar.MILLISECONDS, 0);
Run Code Online (Sandbox Code Playgroud)

更一般地说,不要使用java.util.Calendarjava.util.Date:它们是旧的,设计不良的类,与众所周知的错误相冲突.

使用java.timeJava 8中引入的包中的类; 或早期版本的Java上的threetenbp或JodaTime 类.

  • "或者早期版本中来自threetenbp或JodaTime的类." (5认同)