Ruby возвращает только дату старше 2 дней a go - неопределенный метод `days 'для 2: целое число - PullRequest
1 голос
/ 21 февраля 2020

Массив ниже. Я хочу получить только те дни, которые старше 2.days.a go

data = ["2020-02-21T07:52:14.114+0100",
 "2020-02-19T13:20:50.539+0100",
 "2020-02-11T12:36:16.565+0100",
 "2020-02-17T20:06:53.312+0100",
 "2020-02-04T09:42:30.754+0100",
 "2020-01-29T13:46:16.033+0100",
 "2020-02-18T11:15:12.894+0100"]

Я пытаюсь сделать это с кодом ниже:

data.select { |data| data if DateTime.parse(data) > 2.days.ago }

Но я получаю сообщение об ошибке:

NoMethodError: неопределенный метод `days 'для 2: целое число

1 Ответ

4 голосов
/ 21 февраля 2020

Как уже отмечалось в комментариях других, n.days.ago не является частью простого Ruby, но вводится с Ruby на Rails (см. Документы о days и ago).

Эквивалент n.day.ago в простой форме Ruby может выглядеть примерно так:

 Time.now - n * 24 * 60 * 60

Это означает, что если вы хотите выбрать более старые даты чем через 2 дня вы можете написать свой пример следующим образом:

 two_days_ago = Time.now - 2 * 24 * 60 * 60
 data.select { |data| Time.parse(data) < two_days_ago }

Обратите внимание, что нет необходимости в date if части в блоке select.

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