контроллер:Рельсы и рубин дата расчета
@days = (@date_start - Date.today)
рендеринга <%= @days %>
возвращает
2/1
Первая цифра верна. Как создается поколение и что это значит?
контроллер:Рельсы и рубин дата расчета
@days = (@date_start - Date.today)
рендеринга <%= @days %>
возвращает
2/1
Первая цифра верна. Как создается поколение и что это значит?
d - другая → дата или рациональная
Возвращает разницу между двумя датами, если другой объект даты. Если другое является числовым значением, возвращает объект даты, указывающий на другие дни до себя. Если другой является flonum, предполагается, что его точность не превышает наносекунды.
Таким образом, ваш (2/1)
является номером Rational
. Вы можете проверить это с помощью @days.class
.
Если ваш @date_start
также Date
объект - вы можете конвертировать @days
в Integer
, чтобы получить разницу в днях с @days.to_i
без потери информации, так как разница между Date
с всегда будет (n/1)
Но в целом, метод возвращает Rational
, т.к. вы также можете вычесть DateTime
объекты (с указанием не только дату, но и время), как это:
DateTime.new(2001,2,3) - DateTime.new(2001,2,2,12)
# 03 Feb 2001 00:00:00 - 02 Feb 2001 12:00:00
# => (1/2)
И в этом случае только половина дня находится между 03 Feb 2001 00:00:00
и 02 Feb 2001 12:00:00
, таким образом, она возвращает (1/2)
.
Блестящий! Это также объясняет фундаментальную логику того, как это происходит. – Jerome