2016-02-11 4 views
0

Я строю приложение, чтобы сделать список с Ruby On Rails, и каждый элемент в моем Task ресурс имеет deadline атрибут, который создается с драгоценным камнем 'datetimepicker'.Rails преобразовать DateTimePicker строку даты типа данных даты и времени

Этот 'datetimepicker' камень тянет даты как тип string данных с форматом "12/13/2012", "%m/%d/%Y".

Я пытаюсь сгруппировать task элементов по значению дня в их атрибуте deadline. Я нашел одну статью о том, как это сделать (хотя я думаю, что она содержит одну опечатку):

https://ariejan.net/2007/01/12/rails-group-results-by-week-using-group_by/

Однако я предпочел бы сделать работу в tasks_controller чем task модели (возможно, модель это более чистый способ сделать это? Я нелюбезность и открываю для этого предложения).

Я нашел еще одну статью о методе group_by, который демонстрирует приближенный процесс:

http://railscasts.com/episodes/29-group-by-month?view=asciicast

Эта статья выглядит немного очистителя для меня. Это требует от меня использовать метод .beginng_of_day для обработки всех task элементов с одинаковым значением дня в их deadline.

У меня проблема с обоими методами, которая заключается в том, что они обрабатывают deadline как тип данных datetime. Я хочу использовать метод .to_datetime для преобразования task.deadline, но 'datetimepicker' камень форматирует deadlinestring точно неправильный путь для .to_datetime, чтобы преобразовать его:

"12/13/2012".to_datetime # => ArgumentError: invalid date

см => apidock [точка] ком [слэш] рельсы [ слэш] String [слэш] to_datetime

Я нашел подобную статью, которая рекомендует переформатирования атрибут deadline с .strptime и .strftime методами, но я не вижу, как это сделать, когда deadline является string и не a datetime:

см => StackOverflow [точка] ком [слэш] вопросы [слэш] 16296885 [слэш] как к обращенным-DateTime-подборщика значение к DateTime-в-рубин-на-рельсы

Может кто-нибудь помочь мне сделать это преобразование или предложить другую (желательно более простая!) Стратегия для группировки задач в день?

Благодарим за помощь и извинения за неработающие ссылки; У меня нет достаточных точек репутации для встраивания более 2.

ответ

0

Вам не нужна дата? не время?

В любом случае вы можете использовать

Date.strptime("12/13/2012", "%m/%d/%Y") 
=> #<Date: 2012-12-13 ((2456275j,0s,0n),+0s,2299161j)> 

DateTime.strptime("12/13/2012", "%m/%d/%Y") 
=> #<DateTime: 2012-12-13T00:00:00+00:00 ((2456275j,0s,0n),+0s,2299161j)> 
+0

я мог бы использовать даты и опускаем метод «.beginning_of_day», но тогда я не потерять данные времени от задачи? Я хочу сгруппировать задания по дате, но все же покажу время после этого. –

+0

Если столбец задач - это дата-время, то нет, вы не будете. –

+0

есть. я решил использовать «datetime» вместо «date» и группировать по дням с использованием метода «.to_date». Благодарим вас за повторное форматирование вашей помощи. –

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