На рельсах ТЗИнфо неверное смещение по московскому местному времени
Я установил часовой пояс Rails в 'Moscow' в application.rb.
Когда я спрашиваю местное время, он возвращает значение, которое на час опережает фактическое местное время.
Как я могу обойти это неправильное время для локального преобразования?
2.0.0-p481 :003 > Time.zone
=> #<ActiveSupport::TimeZone:0x000000058a5750 @name="Moscow", @utc_offset=nil, @tzinfo=#<TZInfo::TimezoneProxy: Europe/Moscow>, @current_period=#<TZInfo::TimezonePeriod: #<TZInfo::TimezoneTransitionDefinition: #<TZInfo::TimeOrDateTime: 1301180400>,#<TZInfo::TimezoneOffset: 14400,0,MSK>>,nil>>
2.0.0-p481 :004 > Time.now
=> 2015-09-14 10:37:39 +0000
2.0.0-p481 :005 > Time.current
=> Mon, 14 Sep 2015 14:37:44 MSK +04:00
2.0.0-p481 :006 > tz = TZInfo::Timezone.get('Europe/Moscow')
=> #<TZInfo::DataTimezone: Europe/Moscow>
Вот Time.current
должен вернуться Mon, 14 Sep 2015 13:37:44 MSK +03:00
PS
Rails.version == '4.2.1'
1 ответ
Похоже, вы используете устаревшую копию базы данных часовых поясов IANA. Часовой пояс Европа / Россия в октябре 2014 года установил постоянные часы с +04: 00 до +03: 00. Это изменение было включено в выпуск базы данных часовых поясов за 2014 год.
Rails (через TZInfo) будет получать данные о часовых поясах из каталога zoneinfo вашей системы или из гема tzinfo-data. Вы можете проверить, какой источник данных используется, запустив:
TZInfo::DataSource.get.to_s
Если это вернется "Zoneinfo DataSource: /path/to/zoneinfo"
затем устаревшие данные считываются из названного каталога. Вероятно, вы сможете обновить данные часового пояса, установив обновление от дистрибьютора операционной системы.
Если DataSource.get
возвращается "Ruby DataSource"
, то вы используете старую версию гема tzinfo-data (до версии 1.2014.6). Чтобы обновить, удалите все ограничения версии на gem 'tzinfo-data'
линия в вашем Gemfile
а потом беги bundle update
,
Если вы используете системный каталог zoneinfo, но не можете его обновить, вы можете переключиться на использование гема tzinfo-data, добавив gem 'tzinfo-data'
в ваш Gemfile и работает bundle install
,