java 8 以下,時區處理
在做java6的專案是,需要處理系統和java project 時區不一致問題,如果是使用的spring,可以設定專案的全域性時區,但是java project 沒有找到設定時區的快捷方式,只能自己寫一個getDate 的方法了
首先,不建議System.setProperty("user.timezone","Asia/Shanghai"); 這設定的是全域性變數,會影響到其他的java專案
下面是getDate 的方法
public static Date getDate() {
// 當前系統預設時區的時間:
Calendar calendar = new GregorianCalendar();
// 上海時間
TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
// 時區轉換
calendar.setTimeZone(tz);
Calendar cal = Calendar.getInstance();
cal.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH),
calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND));
return new Date(cal.getTimeInMillis());
}
對於為什麼要cal.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND));
也是沒辦法,因為calendar.getTime(),返回的是在系統時區的時間,不會因為你設定了時區( calendar.setTimeZone(tz);)而改變