我有一个字符串数组,我想要排序,所以我使用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将无法正常工作
有人有任何想法吗?
答案 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