Ответ 1
Используйте этот
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
Log.d("Time zone","="+tz.getDisplayName());
или вы также можете использовать класс java.util.TimeZone
TimeZone.getDefault().getDisplayName()
Как получить текущий часовой пояс в приложении для Android? Я попытался использовать этот
Calendar cal = Calendar.getInstance( userConfig.locale);
TimeZone tz = cal.getTimeZone();
Но я не получаю от него часовой пояс. Как отобразить часовой пояс?
Используйте этот
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
Log.d("Time zone","="+tz.getDisplayName());
или вы также можете использовать класс java.util.TimeZone
TimeZone.getDefault().getDisplayName()
String timezoneID = TimeZone.getDefault().getID();
System.out.println(timezoneID);
В моей консоли напечатано Asia/Calcutta
И любой формат даты я установил его как....
SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MMM-yyyy");
sdf2.setTimeZone(TimeZone.getTimeZone(timezoneID));
Мне понадобилось смещение, которое не только включало дневное свечение, но и как числовое. Вот код, который я использовал, если кто-то ищет пример.
Я получаю ответ от "11", который я ожидаю в NSW, Австралия летом. Я также нуждался в нем в качестве строки, поэтому я мог бы отправить ее на сервер, чтобы вам не понадобилась последняя строка.
TimeZone tz = TimeZone.getDefault();
Date now = new Date();
int offsetFromUtc = tz.getOffset(now.getTime()) / 3600000;
String m2tTimeZoneIs = Integer.toString(offsetFromUtc);
Чтобы отобразить текущее время, вы должны выполнить ниже фрагмент кода в потоке пользовательского интерфейса. Это сработало для меня:
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
runOnUiThread(new Runnable(){
public void run() {
dateTxt.setText(new Date().toString());
}
});
}
}, 0, 1000);