最近写了个获取具体时刻的时间公共方法,但是具体用的时候,发现拿具体的时刻时间戳进行比较,却出现了问题,看起来两个时间都是同一天同一时刻,怎么就不相等了,原来是毫秒数不一致。下面是我的时间刻方法:
public static Date getFixTime(Date date, int hour, int min, int second, int num) {
Calendar time = Calendar.getInstance();
if (null != date) {
time.setTime(date);
}
time.add(Calendar.DATE, num);
time.set(Calendar.HOUR_OF_DAY, hour);
time.set(Calendar.MINUTE, min);
time.set(Calendar.SECOND, second);
return time.getTime();
}
咋一看是没有问题,但是漏掉了给毫秒数赋值,这样取的毫秒数就是当前时间的毫秒数,每次是不一样,所以存在问题。正确的方法如下:
public static Date getFixTime(Date date, int hour, int min, int second, int num) {
Calendar time = Calendar.getInstance();
if (null != date) {
time.setTime(date);
}
time.add(Calendar.DATE, num);
time.set(Calendar.HOUR_OF_DAY, hour);
time.set(Calendar.MINUTE, min);
time.set(Calendar.SECOND, second);
//为了设置时间的更精确性,一定要设置毫秒为0
time.set(Calendar.MILLISECOND,0);
return time.getTime();
}