【问题标题】:Set Time.zone only for one command in Rails 5仅为 Rails 5 中的一个命令设置 Time.zone
【发布时间】:2017-11-16 10:42:13
【问题描述】:

我想在 Rails 中将字符串解析为 Time 对象。此字符串位于默认应用程序时区之外的另一个时区。所以现在,当我解析字符串时,我首先必须存储当前/默认时区,更改时区,解析字符串并将时区更改回默认值。一件事只需要 4 行代码:

current_timezone = Time.zone
Time.zone = "Target time zone"
Time.zone.parse("Tue Nov 23 23:29:57 2010") 
Time.zone = current_timezone

有没有办法在 parse 命令中告诉 Rails 使用哪个时区?

【问题讨论】:

  • 你可以这样做"Tue Nov 23 23:29:57 2010".to_datetime.in_time_zone('Pacific Time (US & Canada)')

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5


【解决方案1】:

Time.in_zone 允许您更习惯地执行此操作。

# Acting with the rails default timezone
Time.use_zone("America/New_York") do
  # Acting with the target timezone
  Time.zone.parse("Tue Nov 23 23:29:57 2010") #=> Tue, 23 Nov 2010 23:29:57 EST -05:00
end
# Acting with the rails default timezone

【讨论】:

  • 谢谢,我觉得这更干净了。
猜你喜欢
  • 2010-10-30
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多