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 楼答案
你的模拟日期是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