2016-07-13 1 views
0

У меня есть поле: datetime поле в rails и используется по умолчанию utc.сохранение значений даты и времени в рельсах при сохранении в utc (по умолчанию)

Но проблема в том, что когда user представляет formcheckin дата вступления его local timezone информации. Таким образом, рельсы будут автоматически convert для utc, и в зависимости от разницы с его часовым поясом и utc может быть отключено один день.

Так как я могу changedate до utc без изменения values?

Update

Это единственный код, который я использую для сохранения в базе данных. (Преобразование UTC делается ActiveRecord (я думаю), если передаваемая в стоимости не UTC)

reservation=current_user.reservations.create(reservation_params) 
    reservation.save 
+0

Итак, вы хотите ** игнорировать ** информацию о локальном часовом поясе и просто сохранить исходное значение? Что вы делаете сейчас? (Отредактируйте свою запись, чтобы включить код.) –

+0

@TomLord Номер для номеров и номеров расположен в разных часовых поясах. Но я думаю, что слишком много головной боли для работы с часовыми поясами, и подумал, что будет легко использовать utc по умолчанию. Форма, которую пользователь представляет, представляет собой угловую форму с объектом даты javascript для даты регистрации. Таким образом, он будет основан на часовом поясе пользователя. – Abhilash

+0

Для начала вам наверняка потребуется использовать часовой пояс ** комнаты **, а не часовой пояс ** пользователя **. В противном случае бронирование номера в часовом поясе, отличном от UTC, принесет удивительные результаты. И снова, повторяю, пожалуйста, включите соответствующий код в свой пост. –

ответ

0

Я нашел способ сделать это. Это не прямая конверсия, как я ожидал, но она работает. Я изменил поле ввода формы, чтобы отправить строку с указанием даты и времени (без utc).

eg: 2016-07-13 00:00:00 

Тогда в моем контроллере перед сохранением я использовал ниже код для его анализа в utc. reservation.check_in = Time.zone.parse (value_from_view)

пример:

reservation.check_in= Time.zone.parse('2016-07-13 00:00:00') 

Wed, 13 Jul 2016 00:00:00 UTC +00:00 Это возвращает, как ожидалось.

Смежные вопросы