У рейках 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, однак, не здається, що він веде себе таким чином.
Я зіткнувся з проблемою, коли користувачі, які говорять LA,Каліфорнія створює курси, які закінчуються о 21:00 в Каліфорнії, і користувачі в різних часових поясах бачать, що курс стає неактивним і зникає в різний час, а не в той самий час. Чи може хтось пролити трохи світла на те, на чому насправді працює Time.zone, і як я можу отримати курс, який закінчується о 21:00 (PST), щоб правильно зникнути об 11:00 (CST)?
Відповіді:
4 для відповіді № 1Замініть
Time.current
З
Time.zone.now
Це дасть вам поточний час у часовому поясі, який ви встановили.
0 для відповіді № 2
t = Time.now
Time.zone = TZInfo::Timezone.get("America/Los_Angeles")
t.in_time_zone
Or
Time.now.in_time_zone("America/Los_Angeles")