2011-08-27 46 views
0

解析這紅寶石1.8.7
Ruby 1.9.2中的解析時間與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 

你能告訴我到底是什麼問題?

這是否與時間在Ruby 1.9.2中解析如下所示?

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

您真的在處理111廣告時代的日期,還是錯字? – d11wtq

+0

嘗試一下,我認爲1.9.2能夠應付比1.8.7更大的日期範圍。它似乎正確地處理了這個日期作爲2世紀的日期,切換時區做了一些有趣的事情。 – d11wtq

+0

@ d11wtq:這不是輸入錯誤,我的輸入是0111,紅寶石187翻譯成2011(這是我想要的),但紅寶石192不會,你可以幫助。 – suren

回答

2

的Ruby 1.9.2是給你的日期在2月1日公元111(因爲這是這一天是什麼)。

http://www.wolframalpha.com/input/?i=February+1st+111AD%3F。我認爲,1.8.7很久以前無法處理日期。

Ruby 1.9.2正在做正確的事情。

如果輸入是這樣寫的,但它確實應該代表2011年,則:

  1. 輸入的格式不正確,因爲它表明今年111AD
  2. 你必須預處理輸入字符串使其成爲正確的解析格式