Rails JQuery DatePicker часовых поясов - PullRequest
3 голосов
/ 16 марта 2012

У меня проблема с попыткой работы с часовыми поясами в средстве выбора даты / времени JQuery с Rails. Datepicker, правильно показывает местный часовой пояс. Проблема возникает, когда я сохраняю выбранную дату в своей базе данных, rails сохраняет ее как время UTC, даже если время находится в часовом поясе клиента. Когда я пытаюсь преобразовать время в utc (Time.zone.parse (params [: time]). Utc), оно дает мне то же значение, что и params [: time], то есть местное время.

Я не хочу изменять настройку config.time_zone в файле environment.rb, так как я не хочу, чтобы время сохранялось в локальном часовом поясе сервера.

Что я хочу сделать, так это получить местное время и преобразовать его в utc, чтобы я мог запланировать работу cron на сервере, время которого установлено в utc. Я хотел бы сэкономить время в базе данных, как местный часовой пояс пользователя ... но я не могу найти способ получить часовой пояс клиента!

Есть ли у меня какие-либо другие параметры, кроме добавления часового пояса в качестве опции для средства выбора даты?

1 Ответ

2 голосов
/ 27 марта 2012

DateTime Picker дает вашим представлениям правильное время для пользователя - после этого вы можете анализировать время, настраивать часовой пояс пользователя и соответственно планировать свою работу cron, добавляя или вычитая соответствующее количество часов , Вот как я это сделал:

# convert your param from a datepicker string to time:

start_time=DateTime.strptime(params[:start_time], "%m/%d/%Y %H:%M:%S").to_time

 # datepicker gives times in UTC to your server *BUT* it appears in the local time to the user. Make sure to adjust for this time difference.

start_time = start_time.in_time_zone(current_user.time_zone) # I let users pick their time zone.

 # account for DST. does this work? I think so.
 offset = (start_time.utc_offset)/60/60

 # now adjust by the hours offset.  you likely want to keep the time in utc for your database...

 adjusted_start_time = (start_time-offset.hours).utc

релевантная информация из другого поста SO Конвертировать UTC в местное время в Rails 3 :

# Rails has it's own names. See them with: rake time:zones:us To see other zone-related rake tasks: rake -D time

# So, to convert to EST, catering for DST automatically:

Time.now.in_time_zone("Eastern Time (US & Canada)")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...