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