2010-06-21 35 views
14

tôi phải tạo sự khác biệt đơn giản giữa hai thời điểm:Làm thế nào để đánh giá sự khác biệt về ngày trong năm, tháng và ngày (ruby)?

Date.parse("2009-06-20") - Date.today 

này mang lại cho tôi sự khác biệt của những ngày trong ngày.

Bất cứ ai biết một cách để dễ dàng chuyển đổi đó để định dạng sau:

The event occurred X years, Y months and Z days ago 

Cảm ơn bạn.

+0

lỗi đánh máy? Y tháng? – ghoppe

+0

có thể trùng lặp của [Chính xác hơn distance_of_time_in_words] (http://stackoverflow.com/questions/1224613/more-precise-distance-of-time-in-words) –

Trả lời

5

Bạn có thể đang tìm kiếm distance_of_times_in_words

+1

Câu trả lời hay, nhưng đó là Ruby-on-Rails cụ thể. Poster sẽ phải trích xuất mã đó trong một chương trình ruby ​​thuần túy. (Anh ta không đề cập đến Rails, vì vậy tôi đoán đó là một câu hỏi cụ thể không phải là đường ray.) – ghoppe

+0

Tệ của tôi, tôi đang sử dụng ruby-on-rails – robertokl

+0

Thật tuyệt, nhưng tôi cần cái gì đó chính xác hơn. Bạn có biết cách nào khác không? – robertokl

0

Tôi không biết bất kỳ cách chuẩn, chính xác nào để thực hiện việc này. Có vẻ như thư viện Ruby tiêu chuẩn có lớp Date nhưng không có chức năng DateSpan. Rails có một giải pháp nhưng nó cảm thấy phần nào của một nỗi đau cho tôi để yêu cầu toàn bộ động vật có vú này cho một nhiệm vụ tầm thường như vậy.

1

Đây là ví dụ về sự khác biệt về ngày, giờ, giây. Thêm các trường bạn cần.

def calculate_difference 
    minutes = (Date.parse("2009-06-20") - Date.today).to_i/60 
    days = minutes/(24*60) 
    minutes -= days * 24*60 
    hours = minutes/60 
    minutes -= hours * 60 
    "#{days}d#{hours}h#{minutes}m" 
end 
+0

không đẹp như vậy =/ –

+0

vâng .. Tôi cũng muốn tính toán tháng và năm .. – robertokl

+1

Vấn đề bắt đầu chính xác với bướm đêm, bởi vì có tháng với 28, 30 và 31 ngày .. – robertokl

3

Có một RubyGem mà trả chênh giờ trong một hash như {: năm = > 0,: tháng => 0, ...}

Liên kết là: https://rubygems.org/gems/time_diff

+1

Đá quý của bạn có vẻ tốt, nhưng tôi nghĩ bạn nên làm việc trên nó. Bạn nên thêm một số văn bản và định dạng cho nó. Hãy tiếp tục phát huy. – robertokl

+0

Cảm ơn bạn. Chắc chắn tôi sẽ cải thiện đá quý của tôi. – abhidsm

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