2016-04-10 5 views
1

Ich arbeite an datediff in Ruby. Ich mache eine Anfrage an die Datebase und ich bin immer CreatedDate Ergebnis in diesem Format:Time diff in Ruby in Minuten ausgedrückt

2016-04-10T19:54:44.000Z. 

Meine Aufgabe ist es zu prüfen, ob Differenz von CreatedDate und die aktuelle Zeit größer als 30 Minuten ist oder nicht. Wenn ich die aktuelle Zeit im UTC-Format erstelle:

Ich bekomme das Ergebnis so;

2016-04-10 19:59:57 UTC 

Meine Frage ist: das createdDate, das ich von der Datenbank bekomme, hat T und .000Z. Es ist ein einfacher Weg sie zu vergleichen, um 30 Minuten Unterschied zu finden.

Denn gerade jetzt, ich bin die Planung zu ändern: mit Raum und .000Z

T. mit UTC, um sie im selben Format zu machen.

+0

Welche Art von Datenbank ist das? Der Name des Kamelfalls ('createdDate') und sein Typ (String?) Sind ungewöhnlich. Wäre es nicht viel einfacher, einen ORM wie Active Record zu verwenden? – Stefan

Antwort

2

können Sie Standard verwenden - Operator für Time Objekte:

time_diff = Time.parse('2016-04-10T19:54:44.000Z') - utctime #in seconds 
result = (time_diff/60).abs > 30 #true or false 
+0

Vielen Dank, das ist was ich will, aber für den zweiten Teil: Ich bevorzuge zu verwenden: result = (parsed_time-utctime.to_i) .abs.min –

+0

Dies ist eine Komponente von Time. http://www.tutorialspoint.com/ruby/ruby_date_time.htm aber ich bin mir nicht sicher, ob es korrekt ist, da ich neu bin in Ruby –

+0

@ GökhanAkduğan, in diesem Fall ist es nicht korrekt, "Ergebnis" ist ein 'Float 'Wert – Ilya