计算两个date之间的天数
我如何计算这两个date之间的天数?
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
以获得天数差异。
假设end_date
和start_date
都是Rails中的ActiveSupport::TimeWithZone
类,那么你可以使用:
(end_date.to_date - start_date.to_date).to_i
Rails有一些内置的帮助器可以帮你解决这个问题。 有一件事要记住,这是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"
我在几秒钟内得到的结果,所以这对我工作:
(Time.now - self.created_at) / 86400
以前的答案(到这个date)都没有给出两个date之间的正确差异。
最接近的那个是那个 。 一个完整的答案将转换为to_i
然后划分:
(Time.now.to_i - 23.hours.ago.to_i) / 1.day >> 0 (Time.now.to_i - 25.hours.ago.to_i) / 1.day >> 1 (Time.now.to_i - 1.day.ago.to_i) / 1.day >> 1
在这个问题的具体例子中,如果时间stream逝是相关的,那么就不应该parsing为Date
。 使用Time.parse
代替。
得到一个时间范围内的天数(只是所有天数)
(start_date..end_date).count (start_date..end_date).to_a.size #=> 32
获取两个date之间的天数
(start_date...end_date).count (start_date...end_date).to_a.size #=> 31
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