2017-10-19 6 views
0

Avec ActiveSupport :: TimeWithZone je suis en mesure de faire ce qui suit et de récupérer un objet TimeWithZone dans le fuseau horaire correct.Spécifier UTC Offset au lieu de timezone à ActiveSupport :: TimeWithZone

Time.current.in_time_zone('Alaska') 
:> Thu, 19 Oct 2017 08:45:08 AKDT -08:00 

Y at-il une méthode équivalente à in_time_zone où je peux passer l'UTC Décalage en quelques secondes et retourner un objet TimeWithZone avec le décalage spécifié?

offset = -25200 # -25200 seconds == -08:00 
Time.current.in_utc_offset(offset) 
:> Thu, 19 Oct 2017 08:45:08 -08:00 

Merci d'avance!

En utilisant Rails 5.1.2 & Ruby 2.4.1

Répondre

1

Oui, il est à la vanille Ruby: #getlocal(sec). Il ne va pas vous donner un ActiveSupport::TimeWithZone mais il vous donnera le Time que vous pouvez formater ou faire ce que vous voulez, y compris en utilisant les extensions ActiveSupport.

2.4.1 :016 > Time.now.getlocal(3600) 
=> 2017-10-19 22:56:45 +0100 
2.4.1 :017 > Time.now.getlocal(-3600) 
=> 2017-10-19 20:56:48 -0100 

PS: -25200 est de 7 heures en quelques secondes :) -8: 00 soit 28800

+0

Exactement ce que je cherchais, je vous remercie. J'ai eu du mal à le trouver dans les docs, mais j'ai pensé que quelque chose comme ça existait. Super utile. – theartofbeing