Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 将包含日期的字符串数组拆分为日期顺序_Ruby_Arrays - Fatal编程技术网

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

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

我有一个要排序的字符串数组,所以我使用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.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"