Код: Выделить всё
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"
Подробнее здесь: https://stackoverflow.com/questions/113 ... ecified-pe