Проблема в том, что летнее время заканчивается в Европе 30 октября (где, судя по немецкому сообщению об ошибке, вы находитесь). В результате, если между датами обычно будет 24 + 24 + 24 = 72 часа, в этом случае между датами будет 24 + 24 + 24 + 1 = 73 часа. Таким образом, ваш код определяет, что между датами есть 2,041666 дней. Ваш Math.ceil
затем округляет это до 3.
Самым простым решением в этом случае, вероятно, является просто замена Math.ceil
на Math.round
. Когда DST заканчивается, ваши 2,04166 дней будут округлены до 2 дней. Когда начинается летнее время, вы должны отработать 1,99534 дня, а затем округлить до 2 дней.