Rails时区:设置Time.zone不改变Time.current

时间:2011-12-15 20:30:32

标签: ruby-on-rails ruby timezone activesupport tzinfo

在Rails 3.0.10中,我使用Time.zone来更改用户查看在美国境内发布的课程时间的方式。但是,改变时区似乎并没有像我期望的那样行事

Time.zone = TZInfo::Timezone.get('America/Los_Angeles')
Time.zone     # => (GMT-08:00) America/Los_Angeles
Time.current  # => 2011-10-30 14:00:00 -0700


Time.zone = TZInfo::Timezone.get('America/Chicago')
Time.zone     # => (GMT-06:00) America/Chicago
Time.current  # => 2011-10-30 14:00:00 -0700

我希望时间能够改变以及偏移以适应Time.zone的变化但是它看起来并不像那样。

我遇到一个问题,加利福尼亚洛杉矶的用户正在创建课程,这些课程在加利福尼亚时间晚上9点结束,不同时区的用户看到课程变得不活跃并且在不同的时间消失而不是在同一时间消失。任何人都可以了解Time.zone实际上在做什么,以及我如何能够在晚上9点(太平洋标准时间)晚上11点(CST)正确消失课程?

2 个答案:

答案 0 :(得分:4)

替换

Time.current

使用

Time.zone.now

这将为您提供您设置的时区中的当前时间。

答案 1 :(得分:0)

t = Time.now
Time.zone = TZInfo::Timezone.get('America/Los_Angeles')
t.in_time_zone

或者

Time.now.in_time_zone('America/Los_Angeles')