我想在我的android程序中显示时区的"名称".如果是"格林尼治标准时间+8:00",则显示"香港"; 通过搜索,我发现getDisplayName函数应该切断我的目的.
但是,在我自己的程序中,此功能仅显示"GMT + 8:00",但当我在Google开源项目中使用"getDisplayName"时,它将显示名称"HongKong".
有谁知道这背后的原因?
Fra*_*ues 12
由你决定!您可以使用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]
Run Code Online (Sandbox Code Playgroud)
.
印刷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]
Run Code Online (Sandbox Code Playgroud)
.
印刷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不带语言环境,时区长
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();
}
Run Code Online (Sandbox Code Playgroud)
尝试这个
TimeZone tz = TimeZone.getDefault();
System.out.println(tz.getID());
Run Code Online (Sandbox Code Playgroud)
getDisplayName返回时区并getId返回时区位置名称。
| 归档时间: |
|
| 查看次数: |
5486 次 |
| 最近记录: |