【发布时间】:2014-03-30 06:37:35
【问题描述】:
我正在研究 Android 中的时区概念。
我想通过从应用程序的应用变量中获取时区来更改 Android 平板电脑的时区。我将系统时区作为变量值,即像
Dateline Standard Time
UTC-11
Samoa Standard Time
Hawaiian Standard Time
Alaskan Standard Time
Pacific Standard Time (Mexico)
Pacific Standard Time
US Mountain Standard Time
Mountain Standard Time (Mexico)
Mountain Standard Time
Central America Standard Time
Central Standard Time
Central Standard Time (Mexico)
Canada Central Standard Time
SA Pacific Standard Time
从 Android 案例中,我得到的时区 ID 类似于
Africa/Harare
Africa/Johannesburg
Africa/Kigali
Africa/Lubumbashi
Africa/Lusaka
Africa/Maputo
Africa/Maseru
Africa/Mbabane
Africa/Tripoli
Asia/Amman
Asia/Beirut
Asia/Istanbul
Asia/Jerusalem
Asia/Nicosia
Asia/Tel_Aviv
CAT
EET
Egypt
Etc/GMT-2
Europe/Chisinau
Europe/Helsinki
我的代码是
if (mCalendar != null) {
mCalendar = Calendar.getInstance();
}
else
{
String[] allTimeZones = TimeZone.getAvailableIDs();
Arrays.sort(allTimeZones);
for (int i = 0; i < allTimeZones.length; i++) {
System.out.println(allTimeZones[i]);
}
TimeZone tz = TimeZone.getTimeZone(String.valueOf(Jordan Standard Time));
mCalendar = Calendar.getInstance(tz);
String name = tz.getID();
System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " + name);
}
由于应用程序中的“约旦标准时间”是可变的,因此与平板电脑可用 ID 的时区不同,时区不会改变。
如果我手动将时区替换为“非洲/的黎波里”,则时区将替换为该时区。
我现在的问题是我想将系统时区转换为平板电脑时区 ID 并将其显示在 Android 应用程序中。
【问题讨论】: