2013年9月25日 星期三

Java 查詢可用時區參數與設定時區

    Java 中可以透過 TimeZone 物件來查詢、設定 有關時區資訊。

查詢目前使用的時區:
TimeZone.getDefault().getID(); // Asia/Taipei
TimeZone.getDefault().getDisplayName(); // friendly name ex: 台灣標準時間

設定時區:
TimeZone tx = TimeZone.getTimeZone("Indian/Cocos"); // "Indian/Cocos" 就是 TimeZone ID
TimeZone.setDefault(tx);

列出可用時區:
String [] ids = TimeZone.getAvailableIDs();
for (String timezone : ids) {
    System.out.println(timezone + " " + 
          TimeZone.getTimeZone(timezone).getDisplayName());
}

   如果要取得目前日期時間可以透過 Calendar 物件取的相關訊息:
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
int second = now.get(Calendar.SECOND);
int month = now.get(Calendar.MONTH);
int day = now.get(Calendar.DAY_OF_MONTH);
int year = now.get(Calendar.YEAR);
System.out.printf("現在是 %d/%d/%d %02d:%02d:%02d", 
    year, (month+1), day, hour, minute, second);

    要注意的是,Calendar 物件類別中的 MONTH 是用 0 到 11 來到表 1 月到 12 月,所以取得的數值要加 1 才會顯示正確。
 
    當你發現上面顯示的日期時間與你的電腦不符時,有可能是 Java 解譯器用錯時區設定;當 Java 解譯器不曉得目前的預設時區的話,會直接使用格林威治時間。

[相關資料]
[Java] 日期方法 (Date method)

沒有留言: