如何在Android中获取TimeZone的名称

时间:2014-12-15 08:33:49

标签: android timezone

我想展示"名称"在我的android程序中的时区。如果它是" GMT + 8:00",则显示" HongKong&#34 ;;通过搜索,我发现getDisplayName函数应该切断我的目的。

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

但是,在我自己的程序中,此功能仅显示" GMT + 8:00"但是当我使用" getDisplayName"在谷歌开源项目中,它将显示名称" HongKong"代替。

有谁知道这背后的原因?

3 个答案:

答案 0 :(得分:8)

由你决定! 您可以使用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

打印时区displayName不带语言环境和时区简短:

Log.d(LOG_TAG, calendar.getTimeZone().getDisplayName(false, TimeZone.SHORT));

显示输出:

D/MyActivity: GMT-03:00

打印没有区域设置的时区displayName和时区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)

  

使用默认时区和指定的区域设置获取日历。

请您更清楚地查看此评论:

答案 1 :(得分:3)

您可以通过以下代码找到当前时区

private String getTimeZone() {
        Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
        TimeZone zone = calendar.getTimeZone();
        return zone.getID();
}

答案 2 :(得分:1)

试试这个

TimeZone tz = TimeZone.getDefault();
System.out.println(tz.getID());

getDisplayName返回时区,getId返回时区位置名称。