Преобразование часового пояса Java - PullRequest
1 голос
/ 12 сентября 2010

У меня есть строка, представляющая время в UTC. Мне нужно преобразовать его в длинные, представляющие миллисекунды с полуночи в EST, учитывая летнее время. Например, в январе смещение составляет 5 часов, а в июне - 4 часа.

Однако приведенный ниже код отображает одинаковое смещение в 5 часов для июня и января. Переменная tzOffset = -18000000 (= -5 часов) независимо от даты месяца.

Пожалуйста, сообщите,

Спасибо!

package TimeConversion;

import java.text.SimpleDateFormat;

import java.util.*;

public class TimeConversion {

    public static void main(String[] args) throws Exception {

        String utcTime = "20100101120000000";
        SimpleDateFormat sdfIn = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        sdfIn.setTimeZone(TimeZone.getTimeZone("UTC"));        
        long utcMillis = sdfIn.parse(utcTime).getTime();
        long tzOffset = TimeZone.getTimeZone("EST").getOffset(utcMillis);
        long estMillis = utcMillis + tzOffset;
        long estMillisSinceMidnight = estMillis % 86400000;
        System.out.println("utcTime = " + utcTime + "\nestMillisSinceMidnight = " + estMillisSinceMidnight + "(" + 24.0 * estMillisSinceMidnight / 86.4e6 + ")");
    }

}

1 Ответ

0 голосов
/ 12 сентября 2010

Вы можете украсть код из этой утилиты преобразования календаря . Что вам, вероятно, нужно, это getLocalTime. Отказ от ответственности: я написал это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...