Подтвердить что ты не робот

Преобразование локального времени в UTC в Rails

В моей базе данных MySQL поле updated_at хранится как UTC. На прошлой неделе запись была введена в 7 вечера по восточному стандартному времени, и она обновила значение "2012-08-01 23:00:00". Я пытаюсь преобразовать местное время для веб-клиента в UTC, который можно сравнить с полем updated_at в базе данных.

В качестве примера, я хотел бы конвертировать '08/01/2012 7:00 pm 'в' 2012-08-01 23:00:00 '(учитывая, что я в EDT), но я пропускаю аспект часового пояса для преобразования. "7:00 pm" - местное время и может быть из любого часового пояса. Мой текущий код:

ruby-1.9.2-head :015 > from_date = DateTime.strptime('08/01/2012 07:00 pm', '%m/%d/%Y %H:%M %p')
=> Wed, 01 Aug 2012 19:00:00 +0000 
ruby-1.9.2-head :016 > from_date = Time.zone.parse(from_date.to_s).utc
=> 2012-08-01 19:00:00 UTC

Любые мысли?

Изменить: Кроме того, я мог бы использовать "% Z" в моем вызове strptime, но при условии, что у меня есть часовой пояс в значении, которого я в настоящее время не делаю. Я предполагаю, что я мог бы использовать Javascript, чтобы отправить его вместе со значением даты/времени.

4b9b3361

Ответ 1

local to utc

created_at.utc

utc для локального

created_at.localtime

Ответ 2

Сначала я проверил бы настройку вашего часового пояса.

В файле environment.rb(Rails 2) или application.rb(Rails 3) вы можете установить часовой пояс по умолчанию: config.time_zone = 'Eastern Daylight Time (EDT)'

Во-вторых, я бы посмотрел на этот пост для получения информации и рекомендаций и советов для удовлетворения ваших потребностей:
http://databasically.com/2010/10/22/what-time-is-it-or-handling-timezones-in-rails/