Java - получить преобразованную дату из смещения часового пояса и даты

Мой клиент сказал мне, что он предоставит мне смещение часового пояса и дату. Мне нужно преобразовать дату в GMT соответственно.

Я не уверен, прав ли я на стороне или нет. Я думаю, что смещение означает, сколько часов вверх и вниз от GMT, и после получения этой разницы применить эту разницу к дате и времени для конвертации.

Пожалуйста, посмотрите ниже, что я пытаюсь достичь ожиданий клиента.

TimeZone timezone = TimeZone.getTimeZone("GMT");
timezone.setRawOffset(28800000);

Если приведенные выше строки кода верны, какой будет код для получения преобразованной даты? Пожалуйста, предложите...

С Уважением


person S Singh    schedule 05.02.2015    source источник


Ответы (1)


Вы можете использовать Календарь. Учебный класс

public static Calendar convertToGmt(Calendar cal) {

    Date date = cal.getTime();
    TimeZone tz = cal.getTimeZone();

    log.debug("input calendar has date [" + date + "]");

    //Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT 
    long msFromEpochGmt = date.getTime();

    //gives you the current offset in ms from GMT at the current date
    int offsetFromUTC = tz.getOffset(msFromEpochGmt);
    log.debug("offset is " + offsetFromUTC);

    //create a new calendar in GMT timezone, set to this date and add the offset
    Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
    gmtCal.setTime(date);
    gmtCal.add(Calendar.MILLISECOND, offsetFromUTC);

    log.debug("Created GMT cal with date [" + gmtCal.getTime() + "]");

    return gmtCal;
}

Взято из здесь

person drop27    schedule 05.02.2015