Rails 和 Ruby 日期计算
Rails and Ruby date calculation
控制器动作:
@days = (@date_start - Date.today)
渲染<%= @days %>
returns
2/1
第一个数字是正确的。其余部分是如何生成的,它是什么意思?
d - other → date or rational
Returns the difference between the two dates if the other is a date object. If the other is a numeric value, returns a date object pointing other days before self. If the other is flonum, assumes its precision is at most nanosecond.
所以你的 (2/1)
是一个 Rational
号码。您可以使用 @days.class
.
查看
如果您的 @date_start
也是 Date
对象 - 您可以将 @days
转换为 Integer
以获得与 @days.to_i
的天数差异,而不会丢失信息,因为Date
之间的差异将始终为 (n/1)
但一般来说,方法returns 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
之间,因此 returns (1/2)
.
控制器动作:
@days = (@date_start - Date.today)
渲染<%= @days %>
returns
2/1
第一个数字是正确的。其余部分是如何生成的,它是什么意思?
d - other → date or rational
Returns the difference between the two dates if the other is a date object. If the other is a numeric value, returns a date object pointing other days before self. If the other is flonum, assumes its precision is at most nanosecond.
所以你的 (2/1)
是一个 Rational
号码。您可以使用 @days.class
.
如果您的 @date_start
也是 Date
对象 - 您可以将 @days
转换为 Integer
以获得与 @days.to_i
的天数差异,而不会丢失信息,因为Date
之间的差异将始终为 (n/1)
但一般来说,方法returns 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
之间,因此 returns (1/2)
.