2012-02-15 26 views
0

我有我想要的字符串數組的數組排序,以便獲得最新的一個使用Ruby分裂包含日期,日期的順序串

每個字符串是由一個郵戳,文件大小和IPADDRESS

["09/Feb/2012:12:56:40.009+0000 13894 10.0.0.1", 
"09/Feb/2012:14:45:03.829+0000 12951 10.0.0.1", 
"09/Feb/2012:15:13:07.722+0000 3812 10.0.0.1", 
"09/Feb/2012:15:18:47.813+0000 50290 10.0.0.1", 
"09/Feb/2012:15:18:55.430+0000 2796 10.0.0.1", 
"09/Feb/2012:16:02:13.494+0000 5193 10.0.0.1", 
"09/Feb/2012:16:17:18.661+0000 4523 10.0.0.1", 
"09/Feb/2012:16:59:50.671+0000 9764 10.0.0.1", 
"09/Feb/2012:17:07:55.129+0000 3944 10.0.0.1"] 

我需要做的就是捕捉最新的郵戳串(09 /月/ 2012:17:07:55.129在上面的例子)

我不能總是假設數組將按日期順序,所以只使用array.last將不起作用

任何人有任何想法?

回答

2
require 'date' 
a.max_by{|e| DateTime.strptime(e.split(' ').first, '%d/%b/%Y:%H:%M:%S.%L%z')} 
#=> "09/Feb/2012:17:07:55.129+0000 3944 10.0.0.1" 
+0

這就像夢一樣輝煌 – user891380 2012-02-15 11:54:58

0

我首先創建一個只包含日期字符串的新數組。然後,我會排序並詢問數組中的最後一個元素。

values = #your array of strings 
latest_date = values.map{|d| d.split(' ')[0]}.sort.last 
+0

這將其排序作爲字符串而不是作爲一個日期。例如。四月將在一月之前出現。 – Mischa 2012-02-15 11:27:53