DateTime не работает для преобразования строки в дату в рельсах - PullRequest
1 голос
/ 17 марта 2019

Я хочу преобразовать параметры, сгенерированные как: "17.03.2009 8:30 AM" с помощью datetimepcker. Все остальные параметры в форме сохраняются, кроме времени / даты. Я пробовал несколько подходов, но все не удалось.

2.5.3 :010 > a
 => "03/17/2019 8:30 AM" 
2.5.3 :011 > DateTime.strptime(a, "%m/%d/%Y %I:%M:%S %P")
Traceback (most recent call last):
        2: from (irb):11
        1: from (irb):11:in `strptime'
ArgumentError (invalid date)

Это должно быть простой проблемой, но, похоже, у меня ничего не вышло. Кто-нибудь знает, как сохранить параметры datetime в рельсах?

Поле в форме выглядит следующим образом:

<div class="input-group date" id="datetimepicker4" data-target-input="nearest">
<%= f.text_field(:start, value: f.object.start ? f.object.start.strftime('%B %d, %Y') : nil, class: "form-control datetimepicker-input", data: {target:"#datetimepicker4"}, placeholder: "#{t :From}") %>
<div class="input-group-append" data-target="#datetimepicker4" data-toggle="datetimepicker">
<div class="input-group-text"><span class="fas fa-calendar-alt"></span></div>
</div>
</div>

Спасибо

Ответы [ 2 ]

3 голосов
/ 17 марта 2019

Проблема в том, что вы запрашиваете секунды в вашем strptime звонке, но у вашего времени нет секунд. Попробуйте вместо этого:

a = "03/17/2019 8:30 AM"
DateTime.strptime(a, "%m/%d/%Y %I:%M %P")

Или добавьте секунды к вашему времени.

1 голос
/ 17 марта 2019

В вашей строке формата :%S, но в строке, которую вы пытаетесь проанализировать, нет секунд.Либо удалите эту часть строки формата, либо найдите способ, чтобы строка даты содержала секунды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...