将包含日期的字符串数组拆分为日期顺序

时间:2012-02-15 11:01:16

标签: ruby arrays

我有一个字符串数组,我想要排序,所以我使用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 / Feb / 2012:17:07:55.129)

我不能总是假设数组将按日期顺序排列,所以只使用array.last将无法正常工作

有人有任何想法吗?

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:0)

我首先创建一个仅包含日期字符串的新数组。然后我会排序并询问数组中的最后一个元素。

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