2015-02-05 4 views
0

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

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

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

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

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

С уважением

+1

Я хотел бы предложить вам использовать Joda время, чтобы использовать DateTimes с TimeZones : http://www.joda.org/joda-time/ – facundofarias

+0

(a) Вы должны быть более конкретными в своем Вопросе. Приведите примеры ваших данных и ожидаемых/желаемых результатов. (b) найдите StackOverflow перед публикацией. Переходы часовых поясов обрабатывались уже много раз. (c) Совет: найдите «joda» и найдите «java.time». –

ответ

0

Вы хотите использовать Calender Class

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; 
} 

Взятые из here