In Rails, es sei denn, Sie haben einen bestimmten Grund Es ist besser, mit der TimeWithZone-Klasse als mit der Time-Klasse und der DateTime-Klasse zu vereinheitlichen.
Es gibt drei Orte, an denen Sie die Zeitzone einstellen können.
--System
--Umgebungsvariable ENV ['TZ']
Verwenden Sie Time.zone.name
, um zu sehen, welche Zeitzone in application.rb festgelegt ist.
# application.rb
config.time_zone = 'Tokyo'
Time.zone.name
=> "Tokyo"
Um die Sache zu verkomplizieren, hängt die verwendete Zeitzone von der Klasse und den damit verbundenen Methoden ab.
Zum Beispiel
Time.now
mit der Methode now
in Bezug auf die Zeitklasse verwendet die Zeitzone der Umgebungsvariablen
Time.current
mit der der Zeitklasse zugeordneten Methode current
verwendet die Zeitzone von application.rb.
#Die Umgebungsvariable wird verwendet und die Klasse wird zur Zeit
[1] pry(main)> Time.now
=> 2020-07-31 19:39:18 +0900
[2] pry(main)> Time.now.class
=> Time
#application.rb wird verwendet und die Klasse wird zu TimeWithZone
[3] pry(main)> Time.current
=> Fri, 31 Jul 2020 19:39:35 JST +09:00
[4] pry(main)> Time.current.class
=> ActiveSupport::TimeWithZone
Es gibt die folgenden Methoden, um das aktuelle Datum und die aktuelle Uhrzeit abzurufen.
Zusammenfassend ist es besser, die TimeWithZone-Klasse 3 oder 4 zu verwenden (denn wenn Sie sie zu einer internationalen Anwendung machen möchten, können Sie sie auf verschiedene Arten handhaben).
#Die Zeitzone der Umgebungsvariablen wird verwendet
[1] pry(main)> Time.now
=> 2020-07-31 19:43:14 +0900 #Zeitklasse
[2] pry(main)> DateTime.now
=> Fri, 31 Jul 2020 19:43:21 +0900 #DateTime-Klasse
# application.Die Zeitzone rb wird verwendet
[3] pry(main)> Time.current
=> Fri, 31 Jul 2020 19:43:26 JST +09:00 #ActiveSupport::TimeWithZone-Klasse
[4] pry(main)> Time.zone.now
=> Fri, 31 Jul 2020 19:43:32 JST +09:00 #ActiveSupport::TimeWithZone-Klasse
Ich habe auf den folgenden Artikel verwiesen. Der Artikel erklärt es sehr detailliert. https://qiita.com/jnchito/items/cae89ee43c30f5d6fa2c
Recommended Posts