Я знаю, что разница между EDT и EST заключается только в переходе на летнее время в 1 час, но все же я предполагаю, что Rails рассматривает его как разные часовые пояса, верно?
Я бы не ожидал, нет. Сами по себе они не являются разными часовыми поясами — это просто разные части восточного часового пояса. К сожалению, насколько мне известно, для этой концепции «части часового пояса» не существует общепринятого термина.
Преобразование между EST и EDT, как правило, не имеет никакого смысла — при условии, что вы говорите об одном часовом поясе — потому что любой момент происходит либо, когда наблюдается EST, или при соблюдении EDT. Говорить о (скажем) «12 июня, 10:00 по восточному стандартному времени» бессмысленно (хотя я знаю, что это происходит), потому что в июне EST не действует. В человеческом общении тогда неясно, что говорящий на самом деле имеет в виду UTC-5 (не зная о летнем времени) или UTC-4 (не зная о значении буквы S в EST).
Это имело бы какой-то смысл только в том случае, если бы у вас было два часовых пояса, оба из которых являются вариантами восточного, но имеют разные точки перехода. В этом случае вам следует просто поговорить о преобразовании между этими двумя часовыми поясами.
По сути, текущий результат, который вы показали, вполне разумен - вы конвертируете две точки во времени в восточный часовой пояс, и одна приходится на период, когда он наблюдает EST, а другой приходится на период, когда он наблюдает EDT. Вы не должны не пытаться представить последнее в EST, поскольку на тот момент его не существовало.
Если вы хотите представить все в фиксированном смещении UTC-5, вы должны это сделать, но не заявляйте, что это EST.
person
Jon Skeet
schedule
12.03.2015