2010-06-21 9 views
14

Ich habe einen einfachen Unterschied zwischen zwei Datumsangaben machen:Wie kann man einen Datumsunterschied in Jahren, Monaten und Tagen (Rubin) auswerten?

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

Dies mir den Unterschied der Daten in Tagen gibt.

Wer weiß, einen Weg, das zu folgendem Format leicht zu umwandeln:

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

Danke.

+0

Tippfehler? Y Monate? – ghoppe

+0

mögliches Duplikat von [Präzisere distance_of_time_in_words] (http://stackoverflow.com/questions/1224613/more-precise-distance-of-time-in-words) –

Antwort

5

Sie können für distance_of_times_in_words

+1

Gute Antwort, aber das ist Ruby-on-Rails-spezifisch. Das Plakat muss diesen Code in einem reinen Rubin-Programm extrahieren. (Er hat Rails nicht erwähnt, also nehme ich an, es handelt sich um eine Frage, die keine Schienen ist.) – ghoppe

+0

Mein Problem, ich benutze Ruby-on-Rails – robertokl

+0

Das ist gut, aber ich brauche etwas Präziseres. Kennst du einen anderen Weg? – robertokl

0

suchen Ich weiß nicht, von jedem Standard, diese richtige Art und Weise zu tun. So seltsam es auch erscheinen mag, die Standard-Ruby-Bibliothek hat eine Date-Klasse, aber keine DateSpan-Funktionalität. Rails hat eine Lösung, aber es tut mir leid, dieses Mammut für solch eine triviale Aufgabe zu benötigen.

1

Dies ist ein Beispiel für den Unterschied in Tagen, Stunden, Sekunden. Fügen Sie die Felder hinzu, die Sie benötigen.

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

nicht so schön =/ –

+0

ja .. ich möchte auch die Monate und Jahre berechnen .. – robertokl

+1

Das Problem beginnt genau mit Motten, denn es gibt Monat mit 28, 30 und 31 Tagen .. – robertokl

3

Es gibt eine RubyGem, die in einer Hash-Differenz Zeit kehrt wie {: year = > 0,: Monat => 0, ...}

Der Link lautet: https://rubygems.org/gems/time_diff

+1

Ihr Juwel scheint gut, aber ich denke, dass Sie daran arbeiten sollten. Sie sollten etwas Text und Formatierung hinzufügen. Mach weiter so. – robertokl

+0

Danke. Klar werde ich mein Juwel verbessern. – abhidsm

Verwandte Themen