android:TimeZone.getDefault()返回EST,而不是EDT

sci*_*fic 1 java timezone android

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

这是我的代码:

timezone = Calendar.getInstance().getTimeZone()
                                 .getDisplayName(false, TimeZone.SHORT);
Run Code Online (Sandbox Code Playgroud)

Mat*_*int 8

如果您查看的文档getDisplayName,你会发现,第一个参数控制是否返回的标准名称或日光名称.自从您通过后false,您将始终获得标准名称.

您可以使用它inDaylightTime来确定相关日期是否在白天时间.

例如:

Date now = new Date();
TimeZone tz = Calendar.getInstance().getTimeZone();
String name = tz.getDisplayName(tz.inDaylightTime(now), TimeZone.SHORT);
Run Code Online (Sandbox Code Playgroud)