2017-02-15 3 views
0

Скажем, есть компонент в приложении, который переопределяет часовой пояс по умолчанию с TimeZone.setDefault(), и давайте предположим, что все в порядке!
(я вижу, что это плохая практика, но ради этого вопроса, давайте просто пойти с ним.)Получить реальное устройство TimeZone на Android, даже если setDefault был вызван

В некоторых местах очень ограниченные случаи я до сих пор нуждаюсь в часовом поясе фактического устройства, но TimeZone.getDefault() обеспечит переопределенное значение.

Есть ли способ запросить фактический часовой пояс устройства (установленный в настройках Android/предоставленный сетью) без запроса Java TimeZone#getDefault?

+0

Вы можете не только кэшировать оригинальный часовой пояс, даваемых JVM в котором было запущено ваше приложение? –

+0

Посмотрите [здесь] (http://stackoverflow.com/questions/8049912/how-can-i-get-the-network-time-from-the-automatic-setting-called-use-netw/14720918# 14720918), это может быть полезно – Max

ответ

0

Вы можете использовать Интернет, используйте этот запрос API (от лат долго):

http://api.geonames.org/timezoneJSON?formatted=true&lat=44&lng=11&username=demo

возвращается:

{ 
    "sunrise": "2017-02-15 07:15", 
    "lng": 11, 
    "countryCode": "IT", 
    "gmtOffset": 1, 
    "rawOffset": 1, 
    "sunset": "2017-02-15 17:45", 
    "timezoneId": "Europe/Rome", 
    "dstOffset": 2, 
    "countryName": "Italy", 
    "time": "2017-02-15 19:27", 
    "lat": 44 
} 
+0

Это не соответствует предпочтениям пользователя. Если вы перейдете к настройкам, вы можете изменить свой часовой пояс на что-то другое, кроме того, что находится на вашем физическом месте. – TWiStErRob