更改Time.now在服务器上返回不同的时区

问题描述:

我有一个应用程序部署在系统时间晚于UTC 7小时的服务器上。我实际上在英格兰,所以我希望在当地时间格林尼治标准时间(夏时制调整)显示时间。更改Time.now在服务器上返回不同的时区

我正在使用的宝石resque使用Time.now检索当前时间。我需要配置什么才能让Time.now返回正确的时间?

+0

我想你没有机会,只是设置正确的时区的服务器上,例如在Debian机器上用'dpkg-reconfigure tzdata'? – 2011-05-21 14:08:14

+0

我正在使用dotcloud并且没有root权限。使用环境变量是很好的,因为这意味着我不必单独配置每个服务器。 – opsb 2011-05-22 20:32:40

最简单的方法是设置ENV [“TZ”]变量。

> Time.now 
=> 2011-05-21 13:13:23 +0200 
> ENV["TZ"] = "Europe/London" 
=> "Europe/London" 
> Time.now 
=> 2011-05-21 12:13:55 +0100 

检查出一些“时间扭曲”宝石:http://ruby-toolbox.com/categories/time_warping.html