Проблема в получении времени летнего времени? - PullRequest
0 голосов
/ 04 июля 2011

Я пытаюсь получить время другого значения GMT, используя

Calendar c1 = Calendar.getInstance(TimeZone.getTimeZone(gmt));

но как я могу получить время DST в этом часовом поясе.

Ответы [ 2 ]

0 голосов
/ 04 июля 2011

Класс TimeZone предоставляет метод getDSTSavings () для конкретного объекта TimeZone.(JavaDoc: «Возвращает количество времени, которое будет добавлено к местному стандартному времени, чтобы получить местное время на настенных часах.»)

Интерфейс Calendar предоставляет два метода getOffset (), которые позволяют узнать смещение от UTC,(JavaDoc: «Возвращает смещение этого часового пояса из UTC на указанную дату. Если летнее время действует на указанную дату, значение смещения корректируется в соответствии с суммой перехода на летнее время.»)

пожалуйста, посмотрите этот фрагмент кода, чтобы разобраться со сложными способами Java-времени:

@Test
public void testDST() {
    final TimeZone met = TimeZone.getTimeZone("MET");
    Calendar gc = new GregorianCalendar(met);
    final long timeInMillis = gc.getTimeInMillis();
    final long gmtTime= timeInMillis-(gc.getTimeZone().getOffset(timeInMillis));
    final Date gmtDate = new Date(gmtTime);
    System.out.printf("%-40s: %tc\n%-40s: %tc\n%-40s: %tc\n%-40s: %d\n%-40s: %d",
            "new Date() (local timezone)",new Date(), 
            "UTC", gmtDate , 
            "now from Calendar with TC GMT+02:00",gc,
            "zoneoffset",gc.get(Calendar.ZONE_OFFSET), 
            "dst savings",met.getDSTSavings());

}

Вы также можете определить свой собственный SimpleTimeZone и предоставить собственные правила DST, однако я не нашел, как получить эту информацию отпредопределенные часовые пояса.

Вы также должны знать, что если TimeZone.getTimeZone (TZName) не находит указанный часовой пояс, он не выдает исключение, а просто использует GMT, что может вызвать серьезные недоразумения.

Вы можете найти всю эту информацию (и многое другое) в javadoc для календаря, часового пояса, даты и т. Д.

0 голосов
/ 04 июля 2011

В java.util.TimeZone доступно несколько методов для перехода на летнее время.Пожалуйста, ознакомьтесь со страницей BlackBerry Java Docs.

...