我可以覆盖Ruby中的系统时区吗?

我在Ubuntu 12.04上,我可以看到:
$cat /etc/timezone 
America/Phoenix

因此,时间将返回非UTC区域的时间:

$irb
> Time.Now
=> 2013-03-27 13:44:49 -0700
> Time.at 0
=> 1969-12-31 17:00:00 -0700

我可以使用TZ环境变量覆盖系统时区:

$TZ=UTC irb
> Time.Now
=> 2013-03-27 20:47:19 +0000
> Time.at 0
=> 1970-01-01 00:00:00 +0000

无论如何,我可以在Ruby进程中以编程方式进行此更改吗?

解决方法

您还可以通过访问ENV哈希来设置ruby中的环境变量:
ENV['TZ'] = 'UTC'
Time.at 0
#=> 1970-01-01 00:00:00 +0000

也看到了这个答案:Set time zone offset in Ruby,它提供了一种写东西的方法

with_time_zone 'UTC' do
  # do stuff
end

# Now TZ is reset to system standard

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...