[RUBY] [Schienen] Vorsichtsmaßnahmen beim Vergleich von Datum und Uhrzeit mit DateTime

Als ich den Hintergrund schrieb, wurde es ein Gedicht, also werde ich zuerst die Schlussfolgerung schreiben.

Umgebung Rails 5.2.4.2 Ruby 2.6.6

Fazit

Gedicht

Die Dinge passierten gegen Mitternacht. Wenn ich RSpec ausführe, gibt es einige Dinge, die nichts mit der Implementierung zu tun haben.

Nach der Untersuchung scheint der Ort, an dem ich wirklich zurückkehren muss, nicht zurückzukehren. Ich möchte, dass Sie "zurückkehren, wenn Datum und Uhrzeit des letzten Tweets später als gestern sind".

    return if last_tweet.tweeted_at > DateTime.yesterday

Also habe ich nachgeschlagen.

debuggen

[2] pry(#<RegisteredTag>)> DateTime.yesterday
=> Thu, 21 May 2020

Ja, es ist richtig.

[3] pry(#<RegisteredTag>)> DateTime.yesterday.to_time
=> 2020-05-21 00:00:00 +0900

Es ist in Ordnung.

[4] pry(#<RegisteredTag>)> last_tweet.tweeted_at.to_time
=> 2020-05-21 00:30:02 +0900

Das stimmt, vergleichen wir.

[6] pry(#<RegisteredTag>)> last_tweet.tweeted_at > DateTime.yesterday.to_time
=> true

Wenn Sie es vergleichen, sollte es sein. Kehren wir nun zum ursprünglichen Code zurück.

[5] pry(#<RegisteredTag>)> last_tweet.tweeted_at > DateTime.yesterday
=> false

Fafafa? ?? ?? ??

Lassen Sie es uns noch einmal überprüfen.

Datumsvergleich

[33] pry(main)> DateTime.yesterday
=> Thu, 21 May 2020
[34] pry(main)> after_9
=> Thu, 21 May 2020 09:21:38 +0900
[35] pry(main)> DateTime.yesterday < after_9
=> true
[37] pry(main)> before_9
=> Thu, 21 May 2020 08:31:48 +0900
[38] pry(main)> DateTime.yesterday < before_9
=> false

8 Uhr <DateTime.yesterday <9 Uhr Es scheint also, dass die Zeitzone nicht auf "DateTime.yesterday" angewendet wird.

Ich habe es auch am Date.yesterday versucht

[22] pry(main)> Date.yesterday
=> Thu, 21 May 2020
[23] pry(main)> Date.yesterday < before_9
=> false
[24] pry(main)> Date.yesterday < after_9
=> true

Es verhält sich genauso wie DateTime.

Schauen Sie sich die Klasse an

[31] pry(main)> Date.yesterday.class
=> Date
[32] pry(main)> DateTime.yesterday.class
=> Date

Oh, selbst wenn Sie es mit DateTime schaffen, ist die Klasse der Instanz Date. "Date.yesterday" und "DateTime.yesterday" scheinen also dasselbe zu sein.

Recommended Posts

[Schienen] Vorsichtsmaßnahmen beim Vergleich von Datum und Uhrzeit mit DateTime
Datum (und Uhrzeit
[Java] Vorsichtsmaßnahmen beim Vergleichen von Zeichenfolgen mit Zeichenfolgen
Ändern Sie Datum und Uhrzeit in Rails in japanische Notation
[Schienen] Überprüfen Sie die Startzeit (Datum / Uhrzeit-Typ) und die Endzeit
Stellen Sie Datum und Uhrzeit aus der Zeichenfolge mit POI ein
Beispielcode zum Parsen von Datum und Uhrzeit mit Java SimpleDateFormat
[Schienen] Startzeit und Endzeit speichern
Vorsichtsmaßnahmen beim Ersetzen von Anführungszeichen durch gsub
[Ruby] Grundlagen zu Datum, Uhrzeit und Datumszeit
Vorsichtsmaßnahmen beim Erstellen von PostgreSQL mit Docker-Compose
[MySQL] [Java] Datum und Uhrzeit empfangen
[Achtung !!] Vorsichtsmaßnahmen beim Konvertieren von Rails-Geräten und Anzeigen von Dateien in haml
Welche Klasse sollte verwendet werden, um Datum und Uhrzeit in der Rails-App abzurufen (Time, DateTime, TimeWithZone)?
Eine Sammlung von Methoden, die häufig beim Bearbeiten der Zeit mit TimeWithZone of Rails verwendet werden
Erstellen einer Rails 6- und PostgreSQL-Umgebung mit Docker
Erläuterung der Ruby Time- und Date-Objekte
[Rails] [Hinweis] Wann = zu <%%> hinzugefügt werden soll und wann nicht
[JSR-310 Datums- und Uhrzeit-API] Vorsichtsmaßnahmen für die Formatdefinition beim Konvertieren von japanischen Kalenderzeichenfolgen in Datumsangaben
Formatieren Sie das von created_at angegebene Datum und die Uhrzeit
[Rails] Fehlerbehebung beim Generieren von Token mit PAYJP
Methode zur Erfassung von Datum und Uhrzeit mithilfe der DateAndTime-API
So erstellen Sie eine API mit GraphQL und Rails