Рассмотрим следующий код:DateTime и продолжительность добавить
void main() {
var duration = new Duration(days : 1);
print ("duration " + duration.toString());
var d1 = new DateTime(2014, 10, 26);
print ("d1 " + d1.toString());
d1 = d1.add(duration);
print ("d1 + duration " + d1.toString());
var d2 = new DateTime(2014, 10, 20);
print ("d2 " + d2.toString());
d2 = d2.add(duration);
print ("d2 + duration " + d2.toString());
}
и выход:
duration 24:00:00.000000
d1 2014-10-26 00:00:00.000
d1 + duration 2014-10-26 23:00:00.000
d2 2014-10-20 00:00:00.000
d2 + duration 2014-10-21 00:00:00.000
Почему 20 октября и 26 ведут себя по-разному. Я проверил один и тот же код для каждого дня в году, и каждый год имеет один день, когда дата + 1 день равна той же дате. Каждый год дата, кажется, в октябре между 25/10 и 30/10.
Это ошибка или я что-то пропустил?
С уважением Пеймана
конечно, вы правы. Я пропустил часть DateTime быть по местному времени. это летнее. 20 октября работает, как я ожидал (= следующий день) var d1 = новый DateTime.utc (2014, 10, 26); Исправляет мою проблему. – Peyman