Как посчитать количество дней между этими двумя датами?
start_date = Date.parse "2012-03-02 14:46:21 +0100"
end_date = Date.parse "2012-04-02 14:46:21 +0200"
С помощью классов Date (и DateTime) вы можете (end_date - start_date).to_i
получить разницу в количестве дней.
Time
объекты возвращают секунды, хотя.Time
объекты, а неDate
объекты. Возможно, вы могли бы обновить названия в своем комментарии, чтобы отразить, что они не являются датами?Предполагая, что
end_date
иstart_date
оба классаActiveSupport::TimeWithZone
в Rails, вы можете использовать:источник
(Time.zone.now.to_date - 23.hours.ago.to_date).to_i
, он дает 1 и должен быть 0Time.zone.now.to_date
возвращает «ср, 15 ноября 2017», а23.hours.ago.to_date
возвращает «вт, 14 ноя 2017». Разница в количестве дней равна и должна быть равна 1, если вы не запускали свой код за час до полуночи.В Rails есть несколько встроенных помощников, которые могут решить эту проблему за вас. Следует иметь в виду, что это часть помощников Actionview, поэтому они не будут доступны непосредственно из консоли.
Попробуй это
источник
Я продолжал получать результаты в секундах, так что это сработало для меня:
источник
1.day
неruby
соответствует требованию OP (в тегах). ЭтоRails
или более конкретно,active support
хотяcreated_at
это в основномModel
метод вRails
так ..чтобы получить количество дней во временном интервале (просто подсчет всех дней)
чтобы узнать количество дней между двумя датами
источник
Ни один из предыдущих ответов (на эту дату) не дает правильной разницы в днях между двумя датами.
Тот, что ближе всего, - тот, кто готов . Полный ответ преобразовал бы
to_i
и затем разделил бы:В конкретном примере вопроса не следует анализировать, имеет
Date
ли значение прошедшее время. ИспользуйтеTime.parse
вместо этого.источник
Чтобы иметь количество целых дней между двумя датами (
DateTime
объектами):источник
Чтобы получить разницу дней по двум датам:
источник
источник