1

当我在手机上使用 TimeZone.getDefault() 时,我得到了错误的时区(它应该是 EDT,但它显示的是 EST)。当我进入手机的日期和时间设置时,它说它已设置为 EDT。我究竟做错了什么??

这是我的代码:

timezone = Calendar.getInstance().getTimeZone()
                                 .getDisplayName(false, TimeZone.SHORT);
4

2 回答 2

9

如果您查看的文档getDisplayName您会发现第一个参数控制是返回标准名称还是日光名称。既然您通过了false,您将始终获得标准名称。

您可以使用inDaylightTime来确定相关日期是否为白天。

例如:

Date now = new Date();
TimeZone tz = Calendar.getInstance().getTimeZone();
String name = tz.getDisplayName(tz.inDaylightTime(now), TimeZone.SHORT);
于 2013-06-30T02:21:21.480 回答
0

EDT 是夏令时区,而在冬季则使用 E​​ST。因此,您的手机设置可能只显示时区而不考虑日光。

于 2013-06-29T23:26:14.507 回答