2013-03-26 2 views
0

Я использую Ruby on Rails для разработки приложений, которые включают изменение часового пояса. Найдена одна интересная вещь: теперь это 26 марта 2013 года, и я установил часовой пояс для Афин и, похоже, уже в DST (Time.zone показывает GMT +2 Афины, но время форматирования показывает +0300). Затем я перешел на время Каира, отформатированное время возвращается к +0200DST в Ruby неточно?

Однако, согласно http://www.timeanddate.com/time/dst/2013.html, изменения DST должны произойти 31 марта. Этого еще не должно быть в DST.

Это ошибка в Ruby, или я допустил ошибку?

Редактировать: Я отформатировал дату и время из базы данных, которая является апрелем.1. Таким образом, программа отформатировала это время и показала DST для «того» datetime, вместо того, чтобы показывать его в текущее время.

Мой плохой. Спасибо всем

+0

Какой код вы используете? Что вы понимаете, изменяя часовой пояс. –

+1

Очень важно, чтобы вы показывали код, о котором говорите, вместо того, чтобы просить нас представить это. –

ответ

1

Я подозреваю, что UTC, которое вы видите, не то, что вы ожидаете. Если вы смотрите на часовой пояс, я считаю, что смещение UTC не меняется для DST, но если вы занимаетесь конкретным временем и спрашиваете о смещении UTC, вы увидите то, что ожидаете.

> ActiveSupport::TimeZone['Athens'].now.utc_offset 
=> 7200 

> (ActiveSupport::TimeZone['Athens'].now+1.week).utc_offset 
=> 10800 
+0

То, что я думаю, должен всегда иметь дело с конкретным временем в часовом поясе, а не с самим часовым поясом. –

+0

Спасибо, это точная ошибка, в которую я попал – bobzsj87