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

时间:2018-12-27 21:56:52

标签: java android calendar timezone timezone-offset

我正在不同时区测试我的应用程序。我手动将实体电话的时区更改为英国伦敦,即格林尼治标准时间+00:00

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

GMT+01:00

为什么要向偏移量增加一个小时?

编辑:

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

2 个答案:

答案 0 :(得分:3)

  

据我所知,英国伦敦始终是格林尼治标准时间+00:00?我错了吗?

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

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

参考herehere

答案 1 :(得分:1)

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

  

以适合此TimeZone的指定样式的名称返回   在默认语言环境中向用户演示。如果指定   如果夏令时为true,则返回夏令时名称(即使   此TimeZone不遵守夏令时)。否则,   返回标准时间名称。

这可能就是为什么时间比该值设置为true的时间要早​​一个小时,因为true值会导致夏令时,即使在该时区中未观察到该时间也是如此。

相关问题