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"
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"
With the Date (and DateTime) classes you can do (end_date - start_date).to_i
to get the number of days difference.
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
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"
I kept getting results in seconds, so this worked for me:
(Time.now - self.created_at) / 86400
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.
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
To have the number of whole days between two dates (DateTime
objects):
((end_at - start_at).to_f / 1.day).floor
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