Rails和Ruby日期计算

时间:2015-02-19 06:29:42

标签: ruby ruby-on-rails-3.2

控制器动作:

@days = (@date_start - Date.today)

渲染<%= @days %>返回

2/1

第一个数字是正确的。如何生成其余部分以及它意味着什么?

1 个答案:

答案 0 :(得分:3)

According to docs:

  

d - 其他→日期或​​理性

     

如果另一个是日期对象,则返回两个日期之间的差异。如果另一个是数值,则返回指向self之前的其他日期的日期对象。如果另一个是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:0002 Feb 2001 12:00:00之间,因此会返回(1/2)