Ruby 将包含日期的字符串数组拆分为日期顺序
我有一个要排序的字符串数组,所以我使用ruby得到了最新的一个 每个字符串由一个日期戳、一个文件大小和一个IP地址组成Ruby 将包含日期的字符串数组拆分为日期顺序,ruby,arrays,Ruby,Arrays,我有一个要排序的字符串数组,所以我使用ruby得到了最新的一个 每个字符串由一个日期戳、一个文件大小和一个IP地址组成 ["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
["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是行不通的
有人有什么想法吗?我先创建一个只包含日期字符串的新数组。然后我将排序并请求数组中的最后一个元素
values = #your array of strings
latest_date = values.map{|d| d.split(' ')[0]}.sort.last
这将按字符串排序,而不是按日期排序。例如,四月将出现在一月之前。
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"