Найти среднюю дату из коллекции дат (Ruby) - PullRequest
11 голосов
/ 18 февраля 2010

У меня есть таблица предположений, в каждом предположении есть только дата. Мне было интересно, как мне превратить две или более даты в среднее.

<div id="logic">
<% foo = Date.today %>
<% bar = Date.today + 10 %>
<%= (foo + bar) / 2 %>

Примерно так, но, очевидно, Руби не позволит мне разделить две даты.

Ответы [ 2 ]

13 голосов
/ 18 февраля 2010

С датой немного сложно работать, вы должны использовать Время. Попробуйте преобразовать даты в времена:

require 'time'
foo_time = Time.parse(foo.to_s)
bar_time = Time.parse(bar.to_s)

Преобразование их в метки времени, затем вычисление среднего значения и преобразование обратно во время:

avg = Time.at((foo_time.to_f + bar_time.to_f) / 2)

Вы можете преобразовать это обратно в дату:

avg_date = Date.parse(avg.to_s)
2 голосов
/ 18 февраля 2010
to_time.to_i

Является ли мой друг;)

...