2014-02-18 52 views
0

我無法找到如何將我的Android應用程序的unix時間戳轉換爲正常日期時間。在我的使用案例中,所有事件的報告均在美國山區時間提交。服務器處理時間並存儲正確的unixtime。但是,當我的應用程序從服務器檢索報告時間時,無論用戶所在的世界何處,都需要在美國山區時區顯示unix時間戳。此外,它還需要處理由夏時制造成的GMT偏移量的變化。使用觀察DST的靜態時區在Android中轉換Unix時間戳

以下是我所嘗試的,但我不斷收到錯誤。它說它不能解決setTimeZone方法,並且它期望在該函數內有一個「,」。

//TODO: convert to readable time 
String EventRegDate; 
String EventRegTime; 

EventUnixTime = eventData.getEventUnixtimeTime();//Returns unixtime of event in seconds 
EventUnixTimeMilli = EventUnixTime * 1000; //convert to milliseconds 

String timezone = "US/Mountain"; 
Calendar.setTimeZone(TimeZone timezone); 
Date EventDate = new Date(EventUnixTimeMilli); 
SimpleDateFormat EventDateFormatter = new SimpleDateFormat("yyyy-MM-dd"); 
SimpleDateFormat EventTimeFormatter = new SimpleDateFormat("HHMM"); 

// set strings to use when setting text views 
EventRegDate = EventDateFormatter.format(EventDate); 
EventRegTime = EventTimeFormatter.format(EventDate); 

回答

1

在玩了一些之後,我想通了。

long EventUnixTime = eventData.getEventUnixtimeTime(); 
long EventUnixTimeMilli = (EventUnixTime *1000); 

Date EventDate= new Date(EruptionUnixTimeMilli); 

SimpleDateFormat EventDateFormatter = new SimpleDateFormat("yyyy-MM-dd"); 
EventDateFormatter.setTimeZone(TimeZone.getTimeZone("US/Mountain")); 

SimpleDateFormat EventTimeFormatter = new SimpleDateFormat("HHMM"); 
EventTimeFormatter.setTimeZone(TimeZone.getTimeZone("US/Mountain")); 

String EventRegDate = EventDateFormatter.format(EventDate); 
String EventRegTime = EventTimeFormatter.format(EventDate); 

這會輸出兩個字符串,一個是YYYY-MM-DD,一個是HHMM,總是在Mountain Time。

相關問題