2014-04-10 49 views
0

我使用這個函數來得到真正的設備上的當前時間(銀河S4測試):得到錯誤的時區的Android

private String getCurrentTime(){ 
    TimeZone mtz = TimeZone.getTimeZone(TimeZone.getDefault().toString()); 
    Calendar calendar = Calendar.getInstance(mtz); 
    String current_time = calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND); 
    return current_time ; 
} 

但實際時間(例如):

18: 48:16

函數的返回值:

14時17分41秒

自動日期 & 時間和自動時區在手機上已經過檢查!

但此功能的工作原理:

private String getCurrentTime(){ 
    TimeZone mtz = TimeZone.getTimeZone("GMT+04:30"); 
    Calendar calendar = Calendar.getInstance(mtz); 
    String current_time = calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND); 
    return current_time ; 
} 

另一個問題:

當我改變的時候了電話,2個以前的功能改變返回值,我如何避免這種情況?換句話說,我怎樣才能得到實時(沒有任何互聯網連接)?

回答

1

在第一個示例中,由於toString轉換,您在GMT中接收時間。要獲得您的設備時區,請使用:

TimeZone mtz = TimeZone.getDefault(); 
+0

tnx,now如何獲得實時? –

+0

我知道在這種情況下唯一的方法是從GPS修正中獲取大約當前時間,其中包含UTC時間戳,可以通過SimpleDateFormat輕鬆轉換爲本地時間表示。 –