有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

scala如何用java模拟datetime。时间时钟

为什么使用以下代码生成的日期会将给定时间偏移到11:00:00.00

test("shouldReturnGivenMockedDateTime") {
  val mockedDateTime = "2020-01-01T10:00:00.00Z"
  val clock: Clock = Clock.fixed(Instant.parse(mockedDateTime), TimeZone.getDefault.toZoneId);
  val result = LocalDateTime.ofInstant(clock.instant, TimeZone.getDefault.toZoneId)
  assert(result.toString == "2020-01-01T10:00") // FALSE!!!
  assert(result.toString == "2020-01-01T11:00") // TRUE
}

共 (1) 个答案

  1. # 1 楼答案

    Why the date generated with below code offset the given time to 11:00:00.00?

    你的模拟日期是2020年1月1日。根据你的链接,贝尔格莱德在这一天的UTC+1h偏移量。更准确地说,从2019年10月27日到2020年3月29日。模拟的日期和时间也以UTC为单位,由后面的Z表示。查询本地时区欧洲/贝尔格莱德的时间时,UTC时间加1小时,因此10:00变为11:00

    当然,你是对的,贝尔格莱德在5月这里的偏移量+02:00(因为夏季时间/DST)。只有在转换1月份的日期和时间时,才会使用当时有效的偏移量,而不是5月份的偏移量

    重复你的链接:2020 Time Zones - Belgrade