расщепление массива строк, которые содержат даты в порядке дат - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть массив строк, которые я хочу отсортировать, чтобы получить последнюю, используя 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 / Фев / ​​2012: 17: 07: 55.129 в приведенном выше примере)

Я не всегда могу предположить, что массив будет в порядке дат, поэтому просто использование array.last не сработает

У кого-нибудь есть идеи?

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012
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 голосов
/ 15 февраля 2012

Я бы сначала создал новый массив только из строк даты. Затем я бы отсортировал и запросил последний элемент в массиве.

values = #your array of strings
latest_date = values.map{|d| d.split(' ')[0]}.sort.last
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...