ruby - 如何表达特定时区的时间?

标签 ruby

我有一个 Time 对象,我想更改它的时区而不更改它代表的逻辑时间。例如,如果我选择将时间转换为 UTC-5 时区,2015-08-21 15:00:00 +00:00 将变为 2015-08-21 10:00:00 -05:00。我怎样才能做到这一点?

我使用的是 Ruby 2.0;我没有使用 Rails。

编辑:getlocal @Tasos Stathopoulos 提到的方法大多有效,但如果你调用 zone你得到的结果 nil 。这是可以理解的 - 时间偏移量与时区缩写之间不存在一对一的映射,因此系统无法知道哪个 zone它应该给你——但我希望结果有我指定的某个区域。

最佳答案

您可以使用Time#getlocal (http://ruby-doc.org/core-2.0.0/Time.html#getlocal-method)。

irb(main):001:0> time = Time.now
=> 2015-08-21 21:45:40 +0300
irb(main):002:0> time.getlocal('-05:00')
=> 2015-08-21 13:45:40 -0500
irb(main):003:0> time = time.getlocal('-05:00')
=> 2015-08-21 13:45:40 -0500
irb(main):004:0> time
=> 2015-08-21 13:45:40 -0500

关于ruby - 如何表达特定时区的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32147352/

相关文章:

ruby - Capistrano 3.x 逐行捕获输出

arrays - 用 2 个括号迭代 "For"循环

ruby-on-rails - self.included——包含来自 Ruby 模块的类方法

ruby - 有没有更好的方法从 Ruby 中的 block 中获取值?

ruby - 'input = self' 和 'input = self.dup' 有什么区别

ruby-on-rails - Ruby RI 失败,RDoc::Context::Section 的实例需要有方法 `marshal_load' (TypeError)

ruby - 如何检测 Gnome 终端?

ruby - 如何在终端提示中显示 RVM 当前的 Ruby 和 gemset?

ruby 数量相等?

css - uninitialized constant Sprockets::SassCacheStore Error on Windows (Learn ruby​​ on rails book)