但是,在我的程序中,此函数只显示“GMT+8:00”,但当我在Google开源项目中使用“getDisplayName”时,它会显示名称“HongKong”。
有人知道背后的原因吗? http://developer.android.com/reference/java/util/TimeZone.html#getDisplayName(boolean, int, java.util.Locale)
由你决定!你可以使用 Locale.getDefault()
或一个 Calendar
实例。
Locale.getDefault()
不是 TimeZone,而是指定设备上的语言。
Calendar calendar = Calendar.getInstance();
Locale.getDefault()
。
下面是一些示例:
打印 Log.d(LOG_TAG, String.valueOf(TimeZone.getDefault()));
显示:
D/MyActivity: libcore.util.ZoneInfo[id="Brazil/East",mRawOffset=-10800000,mEarliestRawOffset=-10800000,mUseDst=true,mDstSavings=3600000,transitions=128]
运行 Log.d(LOG_TAG, TimeZone.getDefault().getID());
显示:
D/MyActivity: Brazil/East
.
运行 Log.d(LOG_TAG, String.valueOf(Locale.getDefault()));
显示:
D/MyActivity: fr_FR
.
运行 Log.d(LOG_TAG, String.valueOf(calendar.getTimeZone()));
显示:
D/MyActivity: libcore.util.ZoneInfo[id="Brazil/East",mRawOffset=-10800000,mEarliestRawOffset=-10800000,mUseDst=true,mDstSavings=3600000,transitions=128]
.
使用 Log.d(LOG_TAG, calendar.getTimeZone().getDisplayName());
打印,结果为:
D/MyActivity: heure normale de Brasilia
.
不带语言环境和时区缩写打印时区名称:
Log.d(LOG_TAG, calendar.getTimeZone().getDisplayName(false, TimeZone.SHORT));
输出结果为:
D/MyActivity: GMT-03:00
.
不带语言环境和时区缩写打印时区全称:
Log.d(LOG_TAG, calendar.getTimeZone().getDisplayName(false, TimeZone.LONG));
输出结果为:
D/MyActivity: heure normale de Brasilia
.
查看你使用的方法的 Javadoc:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#getInstance(java.util.Locale)
使用默认时区和指定的语言环境获取日历。
阅读以下评论以更清楚地理解:
.
private String getTimeZone() {
Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
TimeZone zone = calendar.getTimeZone();
return zone.getID();
}
试试这个
TimeZone tz = TimeZone.getDefault();
System.out.println(tz.getID());
getDisplayName
返回时区信息,getId
返回时区位置名称。
TimeZone
(可能还有SimpleTimeZone
)的子类,以显示您想要的名称。 - Michael Scheper