На рельсах ТЗИнфо неверное смещение по московскому местному времени

Я установил часовой пояс 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,

Другие вопросы по тегам