Ich muss ein Time-Objekt als int (TimeObject.to_i) verwenden Dann muss ich ein int zurück in eine Zeit umwandeln, um mit der ursprünglichen Zeit zu vergleichen. Kurzes Beispiel
%Vor%Warum sagt das seine falsche? Wenn ich beide Zeitobjekten drucke, zeigt dasselbe D:
%Vor%sie sind die gleiche Sache D: aber wenn Sie versuchen, mit == oder eql zu vergleichen? sagt sie sind anders (Entschuldigung für mein schlechtes Englisch)
Erläuterung:
eql? (other_time)
Geben Sie true zurück, wenn time und other_time beide Zeitobjekte mit den gleichen Sekunden und Sekundenbruchteilen sind.
Link: Zeit # eql?
Offensichtlich werden Bruchteile von Sekunden bei der Ausführung von #to_i
gelöscht und die wiederhergestellte Zeit entspricht nicht genau der ursprünglichen Zeit. Aber wenn wir zwei Kopien wiederherstellen, sind sie gleich.
Man könnte denken: "Hey, lass uns #to_f
dann benutzen!". Aber, überraschend, die Ergebnisse sind die gleichen! Vielleicht ist es wegen Rundungsfehlern oder Fließkomma-Vergleich nicht sicher.
Konvertieren Sie die Ganzzahl nicht zurück in die Zeit für den Vergleich. Konvertiere die Originalzeit stattdessen in int!
%Vor%