2016-07-27 17 views
4

So vergleichen Sie 3 Daten, (Time.now - @ model.updated_at) <: Integer (konvertiert in Tage), Also zuerst ist eine Subtraktion zwischen zwei Daten und der Unterschied zwischen den beiden Daten als (Menge der Zeit) wird verglichen (< weniger als) zu einem: integer.days (Zeit). Ich hoffe, das macht Sinn ... ich gehe verschiedene Optionen durch, aber ich werde nur noch verwirrter. Danke für jede Hilfe.rails So berechnen Sie den Zeitunterschied mit Integer zwischen 3 Daten

"#{Time.now}".to_i.days - "#{:updated_at}".to_i.days < "#{:integer}".to_i.days 
+0

Ich bekam viele Fehler, die ich dachte, waren wegen meiner: Ganzzahl aber stellte sich heraus, wegen der zwei Datumsunterschied. Nicht sicher, warum, aber Time diffrence Juwel schlug das Problem gelöst. Dank an alle! – Francisco

Antwort

2

Ich habe auch das gleiche Szenario in einem meiner Projekte konfrontiert und dort habe ich die Time Difference Gem verwendet. Es ist sehr einfach und leicht zu integrieren und bietet Ihnen zusätzliche Hilfsmethoden, um den Unterschied in Jahr, Monat, Woche, Tag, Stunde, Minute und Sekunden zu erhalten.

Stellen Sie die Start- und Enddatum

start_time = Time.new(2013,1) 
end_time = Time.new(2014,1) 

nun die berechnen die Differenz als

TimeDifference.between(start_time, end_time).in_days 
=> 365.0 

Zusätzlich nennen es bietet Ihnen die Freiheit, alle Unterschiede zugleich

TimeDifference.between(start_time, end_time).in_each_component 
=> {:years=>1.0, :months=>12.0, :weeks=>52.14, :days=>365.0, :hours=>8760.0, :minutes=>525600.0, :seconds=>31536000.0} 
+0

Es ist nicht notwendig, eine neue Abhängigkeit hinzuzufügen. –

+0

@SimoneCarletti, es gibt keine Notwendigkeit, die Möglichkeit zum Hinzufügen einer neuen Abhängigkeit herunterzufahren, es hängt alles vom Projekt ab, wie oft diese Unterschiede berechnet werden und wie einfach es den Code zum Lesen macht. – Leito

+0

Wenn Sie jemals an großen Projekten gearbeitet haben, wissen Sie, wie wichtig es ist, eine geringe Anzahl externer Abhängigkeiten zu behalten. Also ja, in diesem Fall macht es überhaupt keinen Sinn, einem Juwel eine externe Abhängigkeit hinzuzufügen, wenn Sie die gleiche Aufgabe mit dem ausführen können, was Sie haben. –

0

Ich mag das Juwel verwenden time_diff

können Sie verwenden

github

Hier ist ein Beispiel dafür ist, wie es

Time.diff(Time.parse('2011-03-06'), Time.parse('2011-03-07')) 
# => {:year => 0, :month => 0, :week => 0, :day => 1, :hour => 0, :minute => 0, :second => 0, :diff => '1 day and 00:00:00'} 

die Differenz arbeitet, kann mit dem übereinstimmen drittes_datum

2
zu holen

Wenn Sie Rails verwenden, können Sie die Differenz in Sekunden zwischen zwei Zeitobjekten erhalten ts

time1 - time2 

Zum Beispiel mit:

diff = 3.days.ago - Time.current 
# -259200.000132 

Verwenden to_i die ganzzahligen Differenz zu erhalten.

diff.to_i 
-259200 

Der Wert ist in Sekunden. Um also die Tage zu bekommen einfach verwenden:

+0

Ich denke du hast den Tag in Sekunden falsch bewertet: '1.Tag.to_i # => 86400', die das korrekte Ergebnis von 4 ergeben. Anderer Weg: '((5.Tage.August - 1.Tag.Tag) .to_i/1.Tag) .abs # => 4' – Leito

+0

Danke @ Leito, das war ein Tippfehler –

Verwandte Themen