2016-09-21 9 views
0

このレコードが過去30分以内に作成された場合にのみ、レコードの破棄を許可しようとしています。奇数を返す日付の減算

その後、私は私の記録(日付2)のcreated_at値を取得し、Time.now(DATE1)に対するチェック:

date1 = 2016-09-21 19:44:52 +0200 
date2 = 2016-09-21 17:23:16 UTC 

その後、私はちょうど2つのsubstract:

(date1-date2).minutes.to_i 

しかし、結果が返されます私がリフレッシュしたときに何千もの何千ものもの(97000のようなもの)と非常に速く増加しています(Time.nowの変更)上記の例の値の通り、

+0

ここにヒントがあります: '30.minutes.to_i'は' 1800'を返します。 (説明を見つけるために 'to_i'を削除してください) – Stefan

+0

よく' to_i'は私がそれを削除してもあまり行いません。 2つの日付の差の小数部分を消去します。 「分」は有効なRubyメソッドだと思われますが、Timeとは関連していませんが、その結果、私の結果はすべて乱れてしまいます。私は 'to_f'を見つけました。代わりに'(date1-date2).to_f/60'で60で割る秒数を返します。私はまだ矛盾がありますが、それはUTCと他の+0200のためだと思います。それを修正しようとします.. – Maxence

答えて

2

.minutesは、機能しないものです。それを取り外すとうまくいくはずです。 日付を分単位で分けて差し引く必要がある場合は、結果を60で割り、丸めます。

((date1 - date2)/60).round 

幸せなルビーコーディングが役に立った!

+0

ありがとうございます。結果に 'to_f'を適用しましたが、redondantです。実際にはタイムゾーンの相違もありました。次のように動作します。 '(date1.utc-date2.utc)/ 60' – Maxence

1

ローカル時刻(time1)をUTC時刻に変換するか、UTC時刻(time2)を現地時刻に変換する必要があります。

require 'time' 

time1 = Time.parse('2016-09-21 19:44:52 +0200') 
    #=> 2016-09-21 19:44:52 +0200 
time2 = Time.parse('2016-09-21 17:23:16 UTC') 
    #=> 2016-09-21 17:23:16 UTC 

(time1.utc - time2)/60 
    #=> 21.6 
+0

本当に。これは私が使用している答えです。私はグレゴリーと正解を残しています。それはとても近く、あなたのものを役に立つものとしてマークしています。 tks – Maxence

+0

'time1'は' time'オブジェクトの方が 'date1'よりも良い名前だと思っていました。 :-) –

+0

よく使いません。私のコードでは、1つは生の 'Time.now.utc'であり、もう1つは非常にレコード上のcreated_atへの呼び出しです。それをシンプルにしようとしました^^ – Maxence

関連する問題