gpt4 book ai didi

java - JodaTime - 我如何知道指定时间段内是否发生夏令时?

转载 作者:搜寻专家 更新时间:2023-11-01 01:55:18 32 4
gpt4 key购买 nike

我需要知道期间是否定义为:

DateTime start;
DateTime end;

里面有夏令时。

我正在遍历 {start,end} 定义的周期集合,并在每次迭代中将开始和结束提前 24 小时。结果周期从午夜开始,到下一个午夜前 1 毫秒结束。我发现如果期间在类次内有夏令时点会产生不正确的结果,例如:

拥有:

Duration targetDuration = new Duration(24*60*60*1000L-1);
DateTime start = new DateTime("2012-03-10T00:00:00.000-08:00");
DateTime end = new DateTime("2012-03-10T23:59:59.999-08:00");

然后转换完成:

start = end.plusMillis(1);
end = start.plus(targetDuration);

产生:

start = "2012-03-11T00:00:00.000-08:00"
end = "2012-03-12T00:59:59.999-07:00"

不知道JodaTime有没有标准的API可以检查时间段里面有没有夏令时?

最佳答案

使用 DateTimeZone.nextTransition 方法。如果开始时间小于结束日期时间,则说明两者之间至少发生了一个时区转换。这不考虑与 DST 相比的规则更改。也就是说,一个时区可能有一个新规则,表明标准时间有一个新的偏移量,这将显示为时区转换。

if (start.getZone().nextTransition(start.getMillis()) < end.getMillis()) {
// Time zone transition occurred, possibly due to DST
...
}

关于java - JodaTime - 我如何知道指定时间段内是否发生夏令时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11389877/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com