Java常见问题:TimeZone的误用

Calendar cal = new GregorianCalendar(); 
cal.setTime(date); 
cal.set(Calendar.HOUR_OF_DAY, 0); 
cal.set(Calendar.MINUTE, 0); 
cal.set(Calendar.SECOND, 0); 
Date startOfDay = cal.getTime(); 
这里有两个错误, 一个是没有没有将毫秒归零, 不过最大的错误是没有指定TimeZone, 不过一般的桌面应用没有问题, 但是如果是服务器端应用则会有一些问题, 比如同一时刻在上海和伦敦就不一样, 因此需要指定的TimeZone.
正确的写法:
Calendar cal = new GregorianCalendar(user.getTimeZone()); 
cal.setTime(date); 
cal.set(Calendar.HOUR_OF_DAY, 0); 
cal.set(Calendar.MINUTE, 0); 
cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); 
Date startOfDay = cal.getTime(); 
 

猜你喜欢

转载自blog.csdn.net/qq_40109249/article/details/84559977