Rails Time Zone: установка Time.zone без изменения Time.current - PullRequest
1 голос
/ 16 декабря 2011

В 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, однако это не такПохоже, что так себя ведет.

Я сталкиваюсь с проблемой, когда пользователи в Лос-Анджелесе, Калифорния, создают курсы, которые заканчиваются в 21:00 по калифорнийскому времени, а пользователи в разных часовых поясах видят, что курс становится неактивным и исчезает в разное время, а не вв то же время.Может кто-нибудь пролить свет на то, что на самом деле делает установка Time.zone и как я могу заставить курс, который заканчивается в 9 вечера (PST), правильно исчезать в 11 вечера (CST)?

Ответы [ 2 ]

4 голосов
/ 16 декабря 2011

Заменить

Time.current

С

Time.zone.now

Это даст вам текущее время в выбранном вами часовом поясе.

0 голосов
/ 01 февраля 2013
t = Time.now
Time.zone = TZInfo::Timezone.get('America/Los_Angeles')
t.in_time_zone

Или

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