2012-02-09 5 views
1

Я пытаюсь сортировать список записей, которые были созданы с использованием сценария скремблирования экрана. Скрипт добавляет следующий стиль даты и времени (метки времени) для каждой записи:Сортировка записей на основе измененной метки времени?

13 Jan 14:49 

скрипт запускается каждые 15 минут, но если установить порядок сортировки «время DESC» это на самом деле не имеет смысла потому что в нем перечисляются записи следующим образом:

13 Jan 14:49 
13 Jan 12:32 
13 Jan 09:45 
08 Feb 01:10 
07 Feb 23:31 
07 Feb 06:53 
06 Feb 23:15 

Как вы можете видеть, это правильно листинг первой цифры (день месяца в виде числа), но это положить февраль после января. Чтобы добавить к путанице, он помещает последнюю дату в феврале в начале февральского раздела.

Есть ли лучший способ их сортировки, чтобы они были в более понятном порядке?

ответ

1

Если вы сохраняете значения в базе данных, просто используйте тип столбца datetime при создании поля. База данных будет обрабатывать поле как время и будет сортировать значения в хронологическом порядке.

В противном случае, если вы храните значения в другом месте, например, в плоском файле, преобразуйте отформатированное время в unix time. Unix time - целое число, поэтому вы можете сортировать его проще.

Time.parse("13 Jan 09:45").to_i 
# => 1326444300 
Time.parse("08 Feb 01:10").to_i 
# => 1328659800 

Вы всегда можете преобразовать время unix в экземпляр Time.

Time.at(1328659800).to_s 
# => "2012-02-08 01:10:00 +0100" 
+0

Итак, если я создаю миграцию для преобразования столбца времени из строки в целое число, он должен работать как ожидалось? – dannymcc

+0

Подождите, если вы сохраняете поле в базе данных, просто преобразуйте его из строки в datetime. Остальное будет делать база данных. Я не понимал, что вы используете базу данных. –

+0

@simon ... будут ли существующие значения правильно разбираться во время миграции? – rubyprince

Смежные вопросы