当前位置: 首页 > 知识库问答 >
问题:

时区BST偏移错误

戎桐
2023-03-14
final String lastUpdated = "Mon Sep 27 18:29:00 BST 2021";
final DateTimeFormatter LAST_UPDATED_FORMATTER = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z y").withLocale(Locale.UK);
ZonedDateTime zonedDateTime = ZonedDateTime.parse(lastUpdated, LAST_UPDATED_FORMATTER);
LocalDateTime localDateTime = zonedDateTime.withZoneSameInstant(ZoneId.of("UTC")).toLocalDateTime();
System.out.println(zonedDateTime.getOffset()); // +11:00; expected +1
System.out.println(localDateTime.toString());
+11:00
2021-09-27T07:29

一切都清楚一次是UTC中的日期:

final String lastUpdated = "Mon Sep 27 18:29:00 BST 2021";

共有1个答案

颛孙铭
2023-03-14

恐怕这就是你使用模棱两可的缩写所得到的。BST可以表示不同的东西,如这里所示。

在这种情况下,它看起来被解释为布干维尔标准时间,实际上是UTC+11。

(即使在英国,英国夏令时也不总是指英国夏令时。在1968年至1971年间,英国夏令时指的是“英国标准时间”,尽管它仍然是GMT+1。)

 类似资料:
  • 我使用的是“亚洲/曼谷”区域id。该偏移是从格林尼治时间UTC 07:00开始的。 但是当我做了下面的事情时,设置为“01/01/1900 7:00:00.000”时不是7:00 结果就是 周一一月一日07:00:00 ICT 1900 -402 周一一月一日06:00:00 ICT 1900 -420 我想知道偏移量是否在1900年1月1日早上7点左右发生了变化,所以我在维基百科上查了一下。ht

  • 我试图用android的JodaTime库解析ISO格式的日期,但得到了错误的时区偏移量。 我的默认时区是“欧洲/莫斯科”,但结果是“1990-05-04T00:00:00.000 0400”,而它应该是“1990-05-03T23:00:00.000 0300”。Android版本是KitKat。 我做错了什么?

  • 我目前的方法是用所有粒子填充一个数组(称为vertexData),这样数组的结构将是:[particle,particle,particle,...],其中每个粒子都有上面给出的布局。 我的计划是简单地将初始信息提供给顶点着色器,然后让它根据初始信息计算位置偏移量和颜色。我希望大多数的计算是在GPU上完成的。 我想通过将所有数据放在一个缓冲区对象中来传递数据到着色器,然后使用偏移量来获取正确的值来

  • 如果偏移量为4位(-05:00),我可以使用:,但这不适用于3位。 有什么想法吗?

  • 我有一个格式为“2019-04-25T16:34:28-05:00”的字符串。我已经通过模式“yyyy-mm-dd't'hh:mm:ssz”通过joda-time解析了字符串。 它在DateTime中给出的输出是“2019-04-25t15:34:28.000-06:00”。

  • 在我的网站中,用户A创建了一个从上午9:00开始的事件。我将该时间转换为GMT,这样,如果用户B在两小时前的不同时区看到该事件,它可以转换为用户B的时区,并显示该事件在11:00AM开始。 我唯一的想法是,当我得到如下所示的时区偏移量时,我是否应该总是将日期设置为一月,以便无论实际月份如何,我总是得到相同的时区偏移量?或者有没有更好的方法来处理这件事?