2010-02-18 43 views
11

Tôi có một bảng dự đoán, trong mỗi lần đoán chỉ là một ngày. Tôi đã tự hỏi làm thế nào tôi sẽ đi về chuyển hai hoặc nhiều ngày thành trung bình.Tìm ngày trung bình từ bộ sưu tập ngày (Ruby)

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

Something như thế này, nhưng rõ ràng là Ruby sẽ không cho phép tôi chia hai ngày.

+0

Trung bình của hai ngày có nghĩa là gì trong thế giới thực? Bạn có cố gắng tìm ngày tháng giữa hai ngày không? Nếu bạn có 100 ngày, trung bình của họ sẽ là gì? – Simon

+0

Có lẽ nó dễ dàng hơn nếu tôi liên kết đến trang web, http://www.expct.info/products/3 bạn có thể thấy hai ngày 2010-03-18 và 2010-02-18, id muốn xuất trung bình của hai và khai thác sự khôn ngoan của đám đông, càng có nhiều người bỏ phiếu gần hơn với ngày thực sự của iPad phát hành nó * nên * nhận được. Tôi đoán mức trung bình trong ví dụ của tôi sẽ là Date.today + 5 –

Trả lời

13

ngày là một chút khó khăn để làm việc với, bạn nên sử dụng thời gian. Thử chuyển đổi Ngày thành Times:

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

Chuyển đổi họ timestamps, sau đó tính toán mức trung bình, sau đó chuyển đổi trở lại Thời gian:

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

Bạn có thể chuyển đổi lại cho rằng ngày:

avg_date = Date.parse(avg.to_s) 
+0

Cảm ơn bạn đã trợ giúp, điều đó thật tuyệt vời :) –

2
to_time.to_i 

Có phải là bạn của tôi;)

Các vấn đề liên quan