2011-07-19 12 views
1
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 
+0

「Time.now.end_of_day」 – Wukerplank

+0

試してみてください。 –

答えて

1

使用をあなたが欲しいものを得るために.midnight(または.end_of_day)のcombindationと2.days:

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

編集:

は、私は非常にあなたがdatetime型であることをquestion.deadlineを変更をお勧めします。それができない場合は、文字列を日付に変換して計算を実行する必要があります。 @ floorのメソッドはうまくいきますが、これも可能です:

"2011-07-18".to_date 
+0

エラー:私の更新された質問を参照してください:( –

+1

は質問ですか?文字列として格納されている –

+0

はい!文字列として保存されています!varchar(255) –

0

エラーから、文字列にDateTimeメソッドを実行しようとしているようです。 DateTimeオブジェクトを持っていてstrftime( '%d /%m /%y')を実行している場合、DateTimeメソッドはもはやオブジェクトではなく、普通の文字列ではないので、これ以上呼び出すことはできません。したがって、深夜を実行したり、減算オペランドを使用することはできません。

また、格納する文字列はどのような形式ですか? "日付文字列" .to_dateでキャストしてから、あなたのメソッドを実行することができます。