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); } } }
Выход
Будет напечатан следующий результат.