为什么我的getTimeZone().getDisplayName报告错误的偏移量?



我正在不同的时区测试我的应用程序。我手动将物理手机的时区更改为英国伦敦,即 GMT+00:00

但是,当我使用 myCalendar.getTimeZone().getDisplayName(true, TimeZone.SHORT) 打印时区时,它会打印:

GMT+01:00

为什么它会在偏移量上增加一个小时?

编辑:

通过将getDisplayName的第一个参数设置为 false,我得到了正确的GMT+00:00但我不确定为什么要将其设置为 false。据我所知,英国伦敦总是GMT+00:00?我错了吗?

据我所知,英国伦敦总是GMT+00:00?我错了吗?

是的,你错了。 英国在冬季遵守格林威治标准时间 (GMT),并在夏季遵守夏令时,当地称为"英国夏令时"(BST)。

  • 格林威治标准时间 = UTC+00:00
  • BST = UTC+01:00

参考这里和这里。

根据 API,getDisplayName() 的第一个参数指示是否应该使用夏令时。

返回此时区的指定样式的名称,适用于 以默认区域设置向用户演示。如果指定 夏令时为 true,则返回夏令时名称(即使 此时区不遵守夏令时)。否则,一个 返回标准时间名称。

这可能就是为什么将该值设置为 true 时时间提前一小时的原因,因为值 true 将导致夏令时,即使在该时区未观察到该时。

相关内容

  • 没有找到相关文章

最新更新