我正在不同时区测试我的应用程序。我手动将实体电话的时区更改为英国伦敦,即格林尼治标准时间+00:00
但是,当我使用myCalendar.getTimeZone().getDisplayName(true, TimeZone.SHORT)
打印时区时,它会打印:
GMT+01:00
为什么要向偏移量增加一个小时?
编辑:
通过将getDisplayName
的第一个参数设置为false,可以得到正确的GMT+00:00
,但是我不确定为什么应该将其设置为false。据我所知,英国伦敦始终是GMT+00:00
?我错了吗?
答案 0 :(得分:3)
据我所知,英国伦敦始终是格林尼治标准时间+00:00?我错了吗?
是的,你错了。英国在冬天遵守格林威治标准时间(GMT),在夏天遵守夏令时,当地称为“英国夏令时(BST)”。
答案 1 :(得分:1)
根据API,getDisplayName()的第一个参数指示是否应使用夏令时。
以适合此TimeZone的指定样式的名称返回 在默认语言环境中向用户演示。如果指定 如果夏令时为true,则返回夏令时名称(即使 此TimeZone不遵守夏令时)。否则, 返回标准时间名称。
这可能就是为什么时间比该值设置为true的时间要早一个小时,因为true值会导致夏令时,即使在该时区中未观察到该时间也是如此。