2014-04-10 4 views
0

я использую эту функцию, чтобы получить текущее время на реальном устройстве (проверено на Galaxy S4):получает неправильный часовой пояс андроида

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

В первом примере вы получаете время в GMT из-за преобразования toString. Чтобы получить часовой пояс вашего устройства, используйте только:

TimeZone mtz = TimeZone.getDefault(); 
+0

tnx, now Как я могу получить реальное время? –

+0

Единственный способ, который я знаю в таком случае, - получить приблизительно текущее время от GPS-исправлений, которые содержат отметки времени UTC, которые могут быть легко преобразованы в локальное представление времени SimpleDateFormat. –

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