Учебники

Интернализация Java — 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
 Нью-Йорк: 7
 Нью-Йорк: 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);
      }
   }
}

Выход

Будет напечатан следующий результат.