Время разбора в Ruby 1.9.2 не совпадает с Ruby 1.8.7? - PullRequest
0 голосов
/ 27 августа 2011

Разбор этого в 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

ruby ​​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 Ответ

2 голосов
/ 27 августа 2011

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

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

Ruby 1.9.2 делает правильные вещи.

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

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