我正在不同的时区测试我的应用程序。我手动将物理手机的时区更改为英国伦敦,即 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 将导致夏令时,即使在该时区未观察到该时。