我需要知道该期间是否由以下定义:
DateTime start;
DateTime end;
里面有夏令时。
我正在迭代由 {start,end} 定义的周期集合,并在每次迭代中将开始和结束时间向前移动 24 小时。生成的周期从午夜开始,到下一个午夜之前 1 毫秒结束。我发现如果该时段在轮班内有夏令时点会产生错误的结果,例如:
having:
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
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)