Рубин Дата Драгоценный камень Неверная дата - PullRequest
0 голосов
/ 15 декабря 2018

Итак, я перебираю хеш, где одно из ключей / значений: {date: => 'MM / DD / YYYY'}

Когда я перебираю, я использую гем даты, чтобы найтикакой день недели у каждой даты, (0-6).

Чтобы получить день недели для индекса, в котором я сейчас нахожусь, в виде целого числа, чтобы я мог сравнить его с другим целым числом,Идея состоит в том, чтобы проверить, совпадает ли день недели индекса с днем ​​недели, которую я ищу.

Чтобы получить это int, я запускаю следующие команды:

d = Date.parse(hash[i].values[2])
day_of_the_week = d.cwday

Когда я делаю это сам по себе только для выбранной вишни даты, это отлично работает, но я перебираю хеш, что я получаю:

search.rb:25:in `parse': invalid date (ArgumentError)

на конкретную дату «13.09.17».

Что-то не так с 13.09.17?Почему на самом деле это работает в другие дни (начинается с 9/5/17), а затем случайно застревает в этот день?

И когда я писал это, я немного покопался и нашел точнокакой индекс это было:

d = Date.parse(hash[4224].values[2])
day_of_the_week = d.cwday

Дает мне ту же ошибку, я совершенно сбит с толку, что происходит?Кроме того, это не отсутствие MM в 9 / и т. Д., Потому что каждый второй месяц одинаков.

РЕДАКТИРОВАТЬ: результат должен быть 2, 12 сентября 2017 года был вторник.

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Я обнаружил, что с помощью:

d = Date.strptime(hash[i].values[2], '%m/%d/%Y')

Создает ли объект даты текущего индекса лучше, чем:

d = Date.parse(hash[i].values[2].to_s)

Замена, которая сделала трюк.

0 голосов
/ 15 декабря 2018

Вам необходимо передать формат вашей даты, используйте

Date.strptime('9/13/2017', '%m/%e/%Y').
...