Как сравнить даты? - PullRequest
1 голос
/ 19 июля 2011
  get_time_now                = Time.now.strftime('%d/%m/%y') 
  question_deadline_time     = (question.deadline.to_time - 2.days).strftime('%d/%m/%y')


  if get_time_now == question_deadline_time   #2 days till deadline
    Notifier.deliver_deadline_notification(inquiry, question, user, respondent , i)
  end

Мне нужно: Если до даты окончания срока остаются 2 ДНЯ, я отправляю письмо. Как я могу это сделать?

UPD

когда я пишу:

 deadline = question.deadline.midnight - 2.days


        if Time.now.midnight >= deadline

Я получаю:

lib/scripts/deadline_notifier.rb:26: undefined method `midnight' for "19/07/11":String (NoMethodError)
    from lib/scripts/deadline_notifier.rb:18:in `each'
    from lib/scripts/deadline_notifier.rb:18

без полуночи я получаю:

lib/scripts/deadline_notifier.rb:26: undefined method `-' for "19/07/11":String (NoMethodError)
    from lib/scripts/deadline_notifier.rb:18:in `each'
    from lib/scripts/deadline_notifier.rb:18

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Используйте комбинацию .midnight (или .end_of_day) и 2.days, чтобы получить то, что вы хотите:

deadline = question.deadline.midnight - 2.days
if Time.now.midnight >= deadline
  #deliver
end

отредактировано:

Я настоятельно рекомендую изменить question.deadline набыть свиданиемЕсли вы не можете этого сделать, то вам нужно преобразовать вашу строку в дату, чтобы выполнить вычисления на ней.Метод @ floor работает нормально, или вы можете сделать это также:

"2011-07-18".to_date
0 голосов
/ 19 июля 2011

Судя по ошибке, вы пытаетесь запустить метод DateTime для строки.Если у вас есть объект DateTime и вы запустили strftime ('% d /% m /% y'), вы больше не можете вызывать методы DateTime, потому что это больше не объект, а просто старая строка.Таким образом, вы не можете запустить полночь или использовать операнд вычитания.

Кроме того, в каком формате хранится строка?Вы можете попробовать привести его к «строке даты» .to_date, а затем запустить ваши методы.

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