Я начал с (date2 - date1).round
, теперь у этого должна быть работа.Ruby: Как правильно рассчитать разницу по дате?
Проблема:
06 Jan, 2013 до 05 февраля 2013 года =>30
06 Февраль, 2013 до 05 марта 2013 года =>27
06 Март, 2013 по 05 апреля 2013 года =>30
6 апреля 2013 по 27 апреля 2013 года =>21
(Date.strptime('05 Feb,2013', '%d %b, %Y') - Date.strptime('06 Jan,2013', '%d %b,%Y')).round
(Date.strptime('05 Mar,2013', '%d %b, %Y') - Date.strptime('06 Feb,2013', '%d %b,%Y')).round
(Date.strptime('05 Apr,2013', '%d %b, %Y') - Date.strptime('06 Mar,2013', '%d %b,%Y')).round
(Date.strptime('27 Apr,2013', '%d %b, %Y') - Date.strptime('06 Apr,2013', '%d %b,%Y')).round
Поэтому
Total = 108 days [ 30 + 27 + 30 + 21 ]
Но когда я пытаюсь вычислить его в 1 идут как:
(Date.strptime('27 Apr,2013', '%d %b, %Y') - Date.strptime('06 Jan,2013', '%d %b,%Y')).round
Это дает:
Days = 111 days
Теперь 108 дней! = 111 дней
Что я делаю неправильно?
У вас ошибка совсем по одному в своем первом методе. Вы не считаете день между расчетами. – mcfinnigan
На самом деле между 6 января и 27 апреля есть 111 дней. – Shoe
Я не уверен, но Рубин придирчив к пробелам? У вас есть дополнительное пространство между форматом ',' и '% Y' с левой стороны, но не справа. –