Сохранение записи Rails с определенным часовым поясом - PullRequest
4 голосов
/ 22 июля 2011

Как сохранить событие в Берлине с собственным часовым поясом и следующее событие в Тихуана с другим?

Пользователю предлагается выбратьГород для события, например, источник + 02: 00 .

Я хотел бы получить временный код, подобный следующему:

eventstart = "2011-07-22T18:00:00+02:00"

Как быВы идете о создании этой формы?

ОБНОВЛЕНИЕ:

Реализованное сохранение в качестве стандартного UTC подходит по многим причинам.Поэтому теперь я изменяю временную строку в представлении, чтобы представить * distance_to_time_in_words * для eventstart , в зависимости от местного времени пользователя.

Событие в Тихуане, просмотр из Берлина, время:

old_zone = Time.zone
#=> "Berlin"
Time.zone = "Tijuana"
t = Time.zone.parse(eventstart.to_s[0..-7])
#=> 2011-07-22 18:00:00 +08:00
Time.zone = old_zone
#=> "Berlin"
distance_of_time_in_words(Time.now.in_time_zone, t)
#=> "9 hours"

громоздко, но пока работает.Идеи по улучшению приветствуются!

1 Ответ

7 голосов
/ 22 июля 2011

Добавьте столбец time_zone в базу данных и используйте time_zone_select в своей форме, чтобы позволить пользователю выбрать time_zone, для которого он создает событие.

А в модели вы можете преобразовать дату и времядля зонирования конкретной даты и времени и сохранения UTC в базе данных.Вы можете использовать помощник что-то вроде ниже

def local_time(date)
  Time.use_zone(self.time_zone) do
    Time.zone.at(date.to_i)
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...