如何在安卓中获取时区的名称



我想在我的安卓程序中显示时区的"名称"。假设是"GMT+8:00",则显示"香港";通过搜索,我发现getDisplayName函数应该切断我的目的。

http://developer.android.com/reference/java/util/TimeZone.html#getDisplayName(boolean, int, java.util.Locale(

但是,在

我自己的程序中,这个函数只显示"GMT+8:00",但是当我在谷歌开源项目中使用"getDisplayName"时,它会显示名称"香港"。

有谁知道这背后的原因?

这取决于

你!您可以使用Locale.getDefault()Calendar实例。

Locale.getDefault()不是时区,但在设备中指定语言

  • 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

.

打印时区显示不带区域设置和时区 LONG

的名称

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返回时区位置名称。

相关内容

  • 没有找到相关文章

最新更新