如何计算这两个日期之间的天数?
start_date = Date.parse "2012-03-02 14:46:21 +0100"
end_date = Date.parse "2012-04-02 14:46:21 +0200"
答案 0 :(得分:191)
使用Date(和DateTime)类,您可以(end_date - start_date).to_i
获取天数差异。
答案 1 :(得分:97)
假设end_date
和start_date
都是Rails中的ActiveSupport::TimeWithZone
类,那么您可以使用:
(end_date.to_date - start_date.to_date).to_i
答案 2 :(得分:32)
Rails有一些内置的helpers可以为你解决这个问题。要记住的一件事是,这是Actionview助手的一部分,所以它们不能直接从控制台上获得。
试试这个
<% start_time = "2012-03-02 14:46:21 +0100" %>
<% end_time = "2012-04-02 14:46:21 +0200" %>
<%= distance_of_time_in_words(start_time, end_time) %>
"about 1 month"
答案 3 :(得分:28)
我在几秒钟内一直得到结果,所以这对我有用:
(Time.now - self.created_at) / 86400
答案 4 :(得分:14)
获取时间范围内的天数(仅计算所有天数)
(start_date..end_date).count
(start_date..end_date).to_a.size
#=> 32
获取两个日期之间的天数
(start_date...end_date).count
(start_date...end_date).to_a.size
#=> 31
答案 5 :(得分:9)
之前的答案(截至此日期)均未给出两个日期之间天数的正确差异。
最接近的是thatdankent。完整答案将转换to_i
然后除以:
(Time.now.to_i - 23.hours.ago.to_i) / 86400
>> 0
(Time.now.to_i - 25.hours.ago.to_i) / 86400
>> 1
(Time.now.to_i - 1.day.ago.to_i) / 86400
>> 1
在问题的具体示例中,如果过去的时间相关,则不应解析为Date
。请改用Time.parse
。
答案 6 :(得分:3)
要获得两个日期(DateTime
个对象)之间的整天数:
((end_at - start_at).to_f / 1.day).floor
答案 7 :(得分:1)
要获取两个日期相差的天数:
(start.to_date...end.to_date).count - 1
or
(end.to_date - start.to_date).to_i
答案 8 :(得分:1)
答案 9 :(得分:0)
(end_date - start_date)/1000/60/60/24
任何人都有最佳做法,请在下面评论
答案 10 :(得分:-7)
def business_days_between(date1, date2)
business_days = 0
date = date2
while date > date1
business_days = business_days + 1 unless date.saturday? or date.sunday?
date = date - 1.day
end
business_days
end