Время ввода + часовой пояс с Rails - PullRequest
2 голосов
/ 11 октября 2011

Я хочу попросить указать конкретное время, которое включает поле часового пояса.Возможно ли это?

В настоящее время я использую это для получения времени:

<%= f.time_select :meeting_time %>
<%= f.time_zone_select :timezone %>

, и это пытается изменить часовой пояс:

meeting_time.in_time_zone(params[:meeting][:timezone])

, нокогда пользователь вводит время, оно будет автоматически установлено на часовой пояс на сервере рельсов (в данном случае GMT).Затем, если пользователь выберет, например, GMT-1, оно уменьшит время на один час, но я хочу увеличить его, чтобы все время отображалось в GMT.

Пример:

пользователь вводит 18:00 GMT-1, и f.time_select установит его как 18:00 UTC.Затем я пытаюсь преобразовать его в GMT-1, но, поскольку он уже находится в UTC, он даст мне 17:00 GMT-1 вместо 19:00 по Гринвичу, которое я хочу.

Примечание: я не хочуобязательно показывать все время по Гринвичу, но я не думаю, что смогу сохранить в другом формате без изменения часового пояса сервера

1 Ответ

3 голосов
/ 26 декабря 2011

Я не уверен, что это правильное соглашение по rails, но это обходной путь, который мне подходит.

Если вы измените свое местное время на utc, прежде чем сохранить его в базе данных,он должен сохранять правильное время utc независимо от часового пояса сервера.

Установить Time.zone для текущего запроса

    Time.zone = params[:meeting][:timezone]

Отрегулировать до utc

    meeting_time = Time.zone.local_to_utc meeting_time
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...