Время разбора в Ruby 1.9.2 не совпадает с Ruby 1.8.7?

Разбор этого в ruby 1.8.7

time_str = "Sun Feb 01 0111 00:00:00 GMT+0530 (IST)"<br />
Time.parse(time_str)<br />
output 
Tue Feb 01 00:00:00 +0530 2011

рубин 1.9.2

time_str = "Sun Feb 01 0111 00:00:00 GMT+0530 (IST)"<br />
Time.parse(time_str)<br />
output <br />
0111-02-01 00:00:00 +0553 

Не могли бы вы сказать мне, в чем именно проблема?

Это как-то связано с тем, как Time анализирует в ruby ​​1.9.2, как показано ниже?

Time.parse(time) {|y| 0 <= y && y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y}

1 ответ

Ruby 1.9.2 дает вам дату 1 февраля 111 г. н.э. (потому что это и есть эта дата).

http://www.wolframalpha.com/input/?i=February+1st+111 AD%3F. 1.8.7, я полагаю, не смог обработать даты, которые давным-давно.

Ruby 1.9.2 работает правильно.

Если ваш вклад написан таким образом, но он действительно должен представлять 2011 год, то:

  1. Входные данные неправильно отформатированы, так как они указывают на год 111 AD
  2. Вам придется предварительно обработать входную строку, чтобы сделать ее правильным для анализа
Другие вопросы по тегам