Ruby: смещение по-разному интерпретируется Time и DateTime
Кто-нибудь знает почему Time.parse
кажется неверно истолковать смещение??
# Correct:
ruby-1.9.2-p136 > DateTime.parse "2011-04-07T13:53:00-3"
=> Thu, 07 Apr 2011 13:53:00 -0300
ruby-1.9.2-p136 > Time.parse "2011-04-07T13:53:00-3"
=> 2011-04-07 13:53:00 +0300
Формат, кажется, не имеет никакого значения:
ruby-1.9.2-p136 :027 > Time.parse "2011-04-07T13:53:00-0300"
=> 2011-04-07 19:53:00 +0300
ruby-1.9.2-p136 :028 > Time.parse "2011-04-07T13:53:00-03"
=> 2011-04-07 19:53:00 +0300
ruby-1.9.2-p136 :029 > Time.parse "2011-04-07T13:53:00-03:00"
=> 2011-04-07 19:53:00 +0300
1 ответ
Решение
Я думаю, Time.parse преобразует его в ваш часовой пояс. Поэтому, когда вы находитесь в +3, и вы даете ему время 13.53: 00-3, это будет 19.53:00+3 местного времени для вас.
Также, если вы посмотрите на Ruby Doc, вы увидите, что метод анализа Time# понимает только сокращения часовых поясов, описанные в RFC 822, и системный часовой пояс.
Таким образом, вы должны использовать "-0300" вместо "-3".