Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';是我的getTimeZone()。getDisplayName报告的偏移量错误吗?_Java_Android_Calendar_Timezone_Timezone Offset - Fatal编程技术网

Java 为什么';是我的getTimeZone()。getDisplayName报告的偏移量错误吗?

Java 为什么';是我的getTimeZone()。getDisplayName报告的偏移量错误吗?,java,android,calendar,timezone,timezone-offset,Java,Android,Calendar,Timezone,Timezone Offset,我正在不同的时区测试我的应用程序。我手动将物理电话的时区更改为伦敦英国,即GMT+00:00 但是,当我使用myCalendar.getTimeZone().getDisplayName(true,timezone.SHORT)打印时区时,它会打印: GMT+01:00 为什么要增加一个小时的补偿 编辑: 通过将getDisplayName的第一个参数设置为false,我得到了正确的GMT+00:00,但我不确定为什么要将其设置为false。据我所知,英国伦敦总是GMT+00:00?我错了吗?根

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

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

GMT+01:00

为什么要增加一个小时的补偿

编辑:


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

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

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


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

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

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

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

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

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

  • GMT=UTC+00:00
  • 英国夏令时=UTC+01:00
参考,和

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

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

  • GMT=UTC+00:00
  • 英国夏令时=UTC+01:00

参考,和。

>英国在冬季观测格林威治标准时间(GMT),如果是这样,而且现在是冬季,那么为什么它报告GMT+01:00?它不应该现在报告0,夏天报告1吗?不。第一个参数控制它,而不是你运行代码的时间。您指定了
true
,因此您得到的是夏令时期间适用的值-无论现在是否是夏令时。哦,好吧,那就有意义了!感谢您的解释!>英国在冬季观测格林威治标准时间(GMT),如果是这样的话,而且现在是冬季,那么为什么要报告GMT+01:00?它不应该现在报告0,夏天报告1吗?不。第一个参数控制它,而不是你运行代码的时间。您指定了
true
,因此您得到的是夏令时期间适用的值-无论现在是否是夏令时。哦,好吧,那就有意义了!谢谢你的解释!谢谢你的报价,它的要点。正如另一个答案所解释的那样,夏季时间(DST)在伦敦使用(那么,他们在英国脱欧后的选择还有待观察)。无论时区如何,你都不能只加1小时,因为(1)对于时区缩写,如
IST
,修正时间可能是30分钟或2小时(2)。例如,你不能发明一个不存在的夏令时缩写。感谢你的引用,这就说到点子上了。正如另一个答案所解释的那样,夏季时间(DST)在伦敦使用(那么,他们在英国脱欧后的选择还有待观察)。无论时区如何,你都不能只加一个小时,因为(1)对于时区缩写,如
IST
,修正时间可能是30分钟或2小时(2)。例如,你不能发明一个不存在的夏令时缩写。