2013-06-09 6 views
2

Я немного запутался с преобразованием временной метки unix в java.util.Date с часовыми поясами.android convert unix time to utc date

У меня есть отметка времени unix, которая равна "1367832568". это дата UTC (понедельник, май 06 17:29:28 GMT + 00: 00 2013). когда я делаю следующее:

Date d = new Date(1367832568 * 1000); 

это дает мне Mon May 06 17:29:28 GMT+08:00 2013 что не является правильным. он должен дать мне:

Mon May 07 01:29:28 GMT+08:00 2013 

потому что отметка времени unix на самом деле является датой UTC. так что это сбивает с толку. что я должен сделать, чтобы преобразовать отметку времени Unix UTC, чтобы правильно преобразовать объект UTC Date.

+2

попытаться использовать оба аргумента даты: Дата d = новая дата ((длинная) 1367832568 * (длинная) 1000)); – Blackbelt

ответ

4

Я не уверен exactely как вы форматирование объекта даты, но, установив часовой пояс на объект DateFormat (по Гринвичу) я могу получить

MON 06 мая 9:29: 28 GMT 2013 AM

, на той же дате, которую вы ищите.

long time = 1367832568 * (long) 1000; 
    Date date = new Date(time); 
    SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy a"); 
    format.setTimeZone(TimeZone.getTimeZone("GMT")); 
    Log.d("date", format.format(date)); 
+0

Мне не нужна строка. Я хочу, чтобы объект даты имел дату GMT. то, что вы делаете, берет объект локальной даты GMT и использует форматтер и выводит строку GMT. Мне нужен объект GMT Date. строка # 2 в вашем коде должна указывать объект даты GMT. это то, что я хочу. –

+0

также неверная дата, которую вы распечатали. я думаю, что это изменилось из-за вашего часового пояса. правильный выход должен быть Mon May 06 17:29:28 GMT + 00: 00 2013 –

+0

вы не можете установить локаль в объекте Date, вместо этого используйте Календарь. и время правильное согласно http://www.epochconverter.com/ –