Java國際化(i18n)UTC


UTC代表協調世界時。 這是時間標準,並在全世界普遍使用。 所有時區的計算都與UTC的時差相當。 例如,丹麥哥本哈根的時間是UTC + 1表示UTC時間加上一個小時。用於在資料庫中儲存日期和時間。

時區轉換

以下範例將展示各種時區的轉換。 我們將以毫秒為單位列印一天中的小時和時間。 第一次將會有所不同,第二次將保持不變。

檔案:IOTester.java -

import java.text.ParseException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;

public class I18NTester {
   public static void main(String[] args) throws ParseException {

      Calendar date = new GregorianCalendar();

      date.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
      date.set(Calendar.HOUR_OF_DAY, 12);

      System.out.println("UTC: " + date.get(Calendar.HOUR_OF_DAY));
      System.out.println("UTC: " + date.getTimeInMillis());

      date.setTimeZone(TimeZone.getTimeZone("Europe/Copenhagen"));
      System.out.println("CPH: " + date.get(Calendar.HOUR_OF_DAY));
      System.out.println("CPH: " + date.getTimeInMillis());

      date.setTimeZone(TimeZone.getTimeZone("America/New_York"));
      System.out.println("NYC: " + date.get(Calendar.HOUR_OF_DAY));
      System.out.println("NYC: " + date.getTimeInMillis());
   }
}

執行上面範例程式碼,得到以下結果 -

UTC: 12
UTC: 1511956997540
CPH: 13
CPH: 1511956997540
NYC: 7
NYC: 1511956997540

可用時區

以下範例將展示系統可用的時區。

檔案:IOTester.java -

import java.text.ParseException;
import java.util.TimeZone;

public class I18NTester {
   public static void main(String[] args) throws ParseException {
      String[] availableIDs = TimeZone.getAvailableIDs();

      for(String id : availableIDs) {
         System.out.println("Timezone = " + id);
      }
   }
}

執行上面範例程式碼,得到以下結果 -

Timezone = Africa/Abidjan
Timezone = Africa/Accra
...
Timezone = VST