Вот простой ответ, который работает через летнее время:
numDays = ((laterTime - earlyTime)/(24.0*60*60)).round
60 * 60 - количество секунд в часе.
24.0 - количество часов в дне. Это плавание, потому что некоторые дни немного больше, чем 24 часа, некоторые меньше. Поэтому, когда мы делим на количество секунд в дне, у нас все еще есть число с плавающей запятой, и округление округляется до ближайшего целого числа.
Так что, если мы пойдем через DST, в любом случае, мы все равно вернемся к ближайшему дню. Даже если вы находитесь в каком-то странном часовом поясе, который для летнего времени меняется более чем на час.