2
冉下面的代碼:差距在時間跨越JDK版本
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class CalendarTest {
public static void main(String args[]) {
int[] constants = { Calendar.HOUR, Calendar.MINUTE, Calendar.SECOND, Calendar.MILLISECOND };
Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("ART"));
cal1.set(Calendar.AM_PM, Calendar.AM);
cal1.set(Calendar.DAY_OF_MONTH, 1);
cal1.set(Calendar.MONTH, 5);
cal1.set(Calendar.YEAR, 2015);
for (int i = 0; i < constants.length; ++i){
cal1.set(constants[i], 0);
}
System.out.println(cal1.getTimeInMillis() + " | " + new Date(cal1.getTimeInMillis()));
}
}
Output for JDK_1.7.0_76: (time zone database 2014j)
1433106000000 | Mon Jun 01 02:30:00 IST 2015
Output for JDK_1.8.0_51: (time zone database 2015d)
1433109600000 | Mon Jun 01 03:30:00 IST 2015
Output for JDK_1.8.0_40: (time zone database 2014j)
1433106000000 | Mon Jun 01 02:30:00 IST 2015
據我所知,阿根廷和印度不遵守夏令截至2015年6月1日,但我在JDK版本之間的時間觀察差異。
更新:您如何建議在數據庫中存儲時間以適應此類錯誤?