1

在 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 点(中部标准时间)正确消失吗?

4

2 回答 2

4

代替

Time.current

Time.zone.now

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

于 2011-12-15T20:45:59.200 回答
0
t = Time.now
Time.zone = TZInfo::Timezone.get('America/Los_Angeles')
t.in_time_zone

或者

Time.now.in_time_zone('America/Los_Angeles')
于 2013-01-31T20:22:15.293 回答