【问题标题】:android: TimeZone.getDefault() returns EST, not EDTandroid:TimeZone.getDefault() 返回 EST,而不是 EDT
【发布时间】:2013-06-29 23:23:14
【问题描述】:

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

这是我的代码:

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

【问题讨论】:

    标签: java android timezone


    【解决方案1】:

    如果您查看the documentation 中的getDisplayName,您会发现第一个参数控制返回标准名称还是日光名称。由于您传递了false,因此您将始终获得标准名称。

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

    例如:

    Date now = new Date();
    TimeZone tz = Calendar.getInstance().getTimeZone();
    String name = tz.getDisplayName(tz.inDaylightTime(now), TimeZone.SHORT);
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您的帮助。我仍然从中得到 EST。这是我的代码: timezone = Calendar.getInstance().getTimeZone().getDisplayName(false, TimeZone.SHORT);
      猜你喜欢
      • 2019-04-09
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      相关资源
      最近更新 更多