当我在手机上使用TimeZone.getDefault()时,我得到了错误的时区(它应该是EDT,但它表示EST)。当我进入手机的日期和时间设置时,它表示它已设置为EDT。我做错了什么?
这是我的代码:
timezone = Calendar.getInstance().getTimeZone()
.getDisplayName(false, TimeZone.SHORT);
答案 0 :(得分:7)
如果您查看getDisplayName
的{{3}},您会发现第一个参数控制是返回标准名称还是日光名称。由于您通过了false
,因此您将始终获得标准名称。
您可以使用inDaylightTime
来确定相关日期是否在白天时间。
例如:
Date now = new Date();
TimeZone tz = Calendar.getInstance().getTimeZone();
String name = tz.getDisplayName(tz.inDaylightTime(now), TimeZone.SHORT);
答案 1 :(得分:0)
EDT是夏令时夏令时区,在冬季使用EST代替。因此,您的手机设置可能只显示时区而不考虑日光。