У меня просто возникла проблема с полем DateTime, которое было отправлено с неправильным смещением часового пояса, которое я обычно наблюдаю для людей, отправляющих из одной страны (насколько удивительно .... приходящее из Internet Explorer). Мне интересно, может ли это быть связано с DST, которое скоро закончится в конце октября, и что у некоторых браузеров могут быть проблемы с этим (хотя затронутое DateTime было около 15 октября, до изменения).Rails обеспечивает смещение DateTime с параметром часового пояса и DST
В интерфейсной форме использовался bootstrap datetimepicker (основная реализация которого зависит от момента jS). Вот небольшой отрывок из JS, который активирует сборщик и поле, хотя я не уверен, что это отношение здесь
<div class="col-xs-4" id="appointment-time-start">
<%= f.hidden_field :from %>
</div>
<script>
$('#appointment-time-start').datetimepicker({
format: 'LT',
defaultDate: "<%= model.from || (Time.now + 2.days) %>",
});
</script>
Для того, чтобы избежать этой проблемы, я прошу пользователь также представить часовой пояс которого по умолчанию установлен на часовой пояс в Париже.
f.time_zone_select(:time_zone)
Как использовать этот часовой пояс для изменения других дат, которые отправляются как параметры? У меня есть простая форма для отправки, которая отправляет два времени, и мне нужно их модифицировать, чтобы их смещение соответствовало параметру time_zone
(И время перехода на летнее время дополнительно +1, если оно действует).
Мне также интересно, должен ли я делать это в контроллере или непосредственно в модели. Мой контроллер делает обычную вещь, и моя нынешняя модель выглядит (но сейчас я ничего с time_zone
не делает)
class Appointment
include Mongoid::Document
field :from, type: DateTime
field :to, type: DateTime
field :time_zone, default: 'Paris'
Попробуйте использовать 'Time.zone.now' как обычный stdlib. Класс времени не знает tz. – max
http://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html – max
@max Я попробовал 'my_datetime.change (offset: ActiveSupport :: TimeZone.new ('Paris'). Formatted_offset)' Но это дает + 1 вместо +2 (из-за ожидаемого DST) –