Count number of days between two dates

匿名 (未验证) 提交于 2019-12-03 01:47:02

问题:

How do I count the number of days between these two dates?

start_date = Date.parse "2012-03-02 14:46:21 +0100" end_date =  Date.parse "2012-04-02 14:46:21 +0200" 

回答1:

With the Date (and DateTime) classes you can do (end_date - start_date).to_i to get the number of days difference.



回答2:

Assuming that end_date and start_date are both of class ActiveSupport::TimeWithZone in Rails, then you can use:

(end_date.to_date - start_date.to_date).to_i 


回答3:

Rails has some built in helpers that might solve this for you. One thing to keep in mind is that this is part of the Actionview Helpers, so they wont be available directly from the console.

Try this

     "about 1 month" 


回答4:

I kept getting results in seconds, so this worked for me:

(Time.now - self.created_at) / 86400 


回答5:

None of the previous answers (to this date) gives the correct difference in days between two dates.

The one that comes closest is by thatdankent. A full answer would convert to_i and then divide:

(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 

In the question's specific example, one should not parse to Date if the time passed is relevant. Use Time.parse instead.



回答6:

to get the number of days in a time range (just a count of all days)

(start_date..end_date).count (start_date..end_date).to_a.size #=> 32 

to get the number of days between 2 dates

(start_date...end_date).count (start_date...end_date).to_a.size #=> 31 


回答7:

To have the number of whole days between two dates (DateTime objects):

((end_at - start_at).to_f / 1.day).floor 


回答8:

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 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!