为什么我的 getTimeZone().getDisplayName 报告偏移量错误?
Why's my getTimeZone().getDisplayName reporting wrong offset?
我正在不同时区测试我的应用程序。我手动将物理 phone 的时区更改为英国伦敦,即 GMT+00:00
但是,当我使用 myCalendar.getTimeZone().getDisplayName(true, TimeZone.SHORT)
打印时区时,它会打印:
GMT+01:00
为什么要在偏移量上增加一个小时?
编辑:
通过将 getDisplayName
的第一个参数设置为 false,我得到了正确的 GMT+00:00
但我不确定为什么要将它设置为 false。据我所知,英国伦敦总是GMT+00:00
?我错了吗?
根据 API,getDisplayName() 的第一个参数指示是否应使用夏令时。
Returns a name in the specified style of this TimeZone suitable for
presentation to the user in the default locale. If the specified
daylight is true, a Daylight Saving Time name is returned (even if
this TimeZone doesn't observe Daylight Saving Time). Otherwise, a
Standard Time name is returned.
这可能就是为什么将该值设置为 true 时时间提前一个小时的原因,因为 true 值将导致夏令时,即使在该时区没有观察到。
As far as I know, London UK is always GMT+00:00? Am I wrong?
是的,你错了。英国在冬天使用格林威治标准时间 (GMT),在夏天使用当地称为 "British Summer Time" (BST) 的夏令时。
- 格林威治标准时间 = UTC+00:00
- 英国夏令时 = UTC+01:00
我正在不同时区测试我的应用程序。我手动将物理 phone 的时区更改为英国伦敦,即 GMT+00:00
但是,当我使用 myCalendar.getTimeZone().getDisplayName(true, TimeZone.SHORT)
打印时区时,它会打印:
GMT+01:00
为什么要在偏移量上增加一个小时?
编辑:
通过将 getDisplayName
的第一个参数设置为 false,我得到了正确的 GMT+00:00
但我不确定为什么要将它设置为 false。据我所知,英国伦敦总是GMT+00:00
?我错了吗?
根据 API,getDisplayName() 的第一个参数指示是否应使用夏令时。
Returns a name in the specified style of this TimeZone suitable for presentation to the user in the default locale. If the specified daylight is true, a Daylight Saving Time name is returned (even if this TimeZone doesn't observe Daylight Saving Time). Otherwise, a Standard Time name is returned.
这可能就是为什么将该值设置为 true 时时间提前一个小时的原因,因为 true 值将导致夏令时,即使在该时区没有观察到。
As far as I know, London UK is always GMT+00:00? Am I wrong?
是的,你错了。英国在冬天使用格林威治标准时间 (GMT),在夏天使用当地称为 "British Summer Time" (BST) 的夏令时。
- 格林威治标准时间 = UTC+00:00
- 英国夏令时 = UTC+01:00