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".

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