Как я могу установить календарь с временем UTC? - PullRequest
27 голосов
/ 19 мая 2011

Плакаты здесь говорят, что Дата всегда в UTC времени. Однако, если я создаю Date (), создаю календарь и устанавливаю календарное время с датой, время остается моим местным временем (и я не на UTC времени). Я проверил это, напечатав дату календаря в цикле, вычитая час за цикл. 19 мая здесь 23:00, и пройдет 24 цикла, прежде чем дата изменится на 18 мая. Сейчас 1:00 UTC, поэтому, если календарь настроен правильно, потребуется всего 14 циклов.

    Date date = new Date();
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);

    SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");

    int index = 0;
    for(; index > -30; index--)
    {
        System.out.println(index);
        System.out.println(dateFormatter.format(calendar.getTime()));
        System.out.println();
        calendar.add(Calendar.HOUR, -1);
    }

1 Ответ

77 голосов
/ 19 мая 2011

java.util.Calendar имеет статический фабричный метод, который использует часовой пояс.

Calendar.getInstance(java.util.TimeZone)

Итак, вы можете сказать:

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
...