Я использую Rails 3.2 и ruby 1.9.3 на Debian. У меня есть приложение, которое собирает дату, время и часовой пояс в виде строк через форму HTML. Что-то вроде этого:
start_date: "04-15-2010",
start_time: "10:00:00",
timezone: "Central Time (US & Canada)"
То, что я хотел бы сделать, - разобрать эти 3 элемента на одну дату, которая будет сохранена в моей базе данных в формате UTC, которая в этом случае добавит 7 часов к времени начала, как только она появится в часовом поясе UTC. Таким образом, сохраненное время будет 17:00, когда оно будет в БД, как UTC вместо полученного Центрального времени.
Я пробовал что-то вроде этого, чтобы проанализировать дату:
ActiveSupport::TimeZone[timezone].at DateTime.strptime("{ 2012-04-09 20:00:00 }", "{ %Y-%m-%d %H:%M:%S }").to_i
Однако я не могу включить часовой пояс в результирующее время с% Z. Он либо не анализирует, либо время интерпретируется как UTC, а не центральное время. Поэтому мой вопрос заключается в том, как принуждать строку даты к определенному часовому поясу без изменения значения фактической даты/времени. Я хотел бы иметь возможность анализировать строку в объект даты/времени, который включает в себя правильный часовой пояс с ним в то время, чтобы будущие преобразования часовых поясов были точными. Я все посмотрел и не могу найти способ сделать это. Странно, так как это похоже на то, что обычно происходит с датами, введенными из форм HTML. Спасибо за любую помощь.