How can I find the average of 3 date in Ruby on rails or Ruby ? like bellow.
(Date1 + Date2 + Date3)/3
How can I find the average of 3 date in Ruby on rails or Ruby ? like bellow.
(Date1 + Date2 + Date3)/3
If you convert the dates to integers with .to_i
you can do the average exactly as you suggested. Then use .at
to get back to a datetime.
d1 = Time.now
=> 2022-03-16 11:07:12 -0700
d2 = Time.now - 10000
=> 2022-03-16 08:20:32 -0700
d3 = Time.now - 30000
=> 2022-03-16 02:47:12 -0700
Time.at((d1.to_i + d2.to_i + d3.to_i)/3)
=> 2022-03-16 07:24:58 -0700
first_date = Date.today.strftime("%Y%m%d").to_i
second_date = Date.tomorrow.strftime("%Y%m%d").to_i
third_date = Date.yesterday.strftime("%Y%m%d").to_i
average_date = (first_date + second_date + third_date) / 3
Date.parse(average_date.to_s) OR Time.at(average_date)
If you are working with Date objects (Not Time nor DateTime) you can easily calculate the middle date between 3 (or even more dates if you add them to the array).
Imagine you have your dates in an array:
dates = [Date.today, 1.day.ago, 10.days.ago]
difference = dates.max - dates.min
average_date = dates.min + difference/2
Basically, we're getting the days difference between the higher date value and the minimum date value, then adding half that difference to the smallest date, and there you have the average date between the 3, the date in the middle won't change anything so it's not being used with this approach.