2013-06-02 3 views
2

Я написал следующий код, чтобы получить дату в GMT с меткой времени UnixПолучение даты в GMT от Отметка времени Unix

private Date converToDate(String unixTimeStamp) 
{ 
    //unix timestamps have GMT time zone. 
    DateFormat gmtFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy"); 
    gmtFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 

    //date obtained here is in IST on my system which needs to be converted into GMT. 
    Date time = new Date(Long.valueOf(unixTimeStamp) * 1000); 

    String result = gmtFormat.format(time); 

    return lineToDate(result, true); 
} 

этот код при исполнении имеет значение

Mon May 27 02:57:32 IST 2013 

в переменной даты и

Sun May 26 21:27:32 GMT 2013 

в переменной результата, как мне получить значение в переменной результата в дату var iable?

+0

, который дает результат в строке, я получаю его в String, но я хочу, чтобы результатом был Date not a String. –

+0

См. Ответ http://stackoverflow.com/a/2453820/2235132 в вопросе выше. – devnull

ответ

2

Это проблема, концептуально:

//date obtained here is in IST on my system which needs to be converted into GMT. 
Date time = new Date(Long.valueOf(unixTimeStamp) * 1000); 

Date не имеют часовой пояс. Это значение, которое вы хотите. Тот факт, что когда вы вызываете toString(), он преобразует его в ваш местный часовой пояс, не имеет значения для значения, которое оно фактически представляет. A Dateвсего несколько миллисекунд с эпохи Unix (1 января 1970 года, полночь UTC). Таким образом, весь ваш метод может быть:

private static Date convertToDate(String unixTimeStamp) 
{ 
    return new Date(Long.valueOf(unixTimeStamp) * 1000); 
} 

Вам не нужен какой-либо форматировщик, как вы на самом деле не пытаешься получить текстовое представление.

Я бы посоветовал использовать Joda Time для работы с датой/временем, если вы можете, между прочим, - это намного более чистый API.

2

Дата - это всего лишь обертка для длинной, которая содержит несколько миллисекунд.

То, что вы видите, представляет собой представление объекта Date по умолчанию, которое использует ваш часовой пояс по умолчанию (IST), чтобы преобразовать дату в читаемую строку. Если вам нужна дата, представленная в виде строки с использованием часовой пояс GMT, просто сделайте то, что вы сделали: используйте формат даты с часовым поясом GMT.

Объект Date представляет собой мгновение на универсальной временной шкале и не имеет часовой пояс.

Смежные вопросы