web-dev-qa-db-ja.com

時差

2つの異なるTimeインスタンスの時間差を取得しようとしています。 DBからこれらの値を:datetime列として取得します

分を無視または丸めながら計算に月と年を含めるようにするにはどうすればよいですか?これは手動でのみ行うことができますか、またはこれを行う機能はありますか?

64
stellard
((date_2 - date_1) / 3600).round

または

((date_2 - date_1) / 1.hour).round
132
Rômulo Ceccon

Ruby at https://rubygems.org/gems/time_difference の時差gemを試してください

start_time = Time.new(2013,1)
end_time = Time.new(2014,1)
TimeDifference.between(start_time, end_time).in_years
18
user2295540

これはうまく機能します。たとえば、ユーザーがアカウントを作成してからの時間数

(Time.parse(DateTime.now.to_s) - Time.parse(current_user.created_at.to_s))/3600
12
dux

time_diff というgemを使用して、非常に便利な形式で時差を取得できます。

7
Abhilash M A

Railsのメソッドdistance_of_time_in_wordsを使用できます

distance_of_time_in_words(starting_time, ending_time, options = {include_seconds: true })
4
The Whiz of Oz

Railsでは、これを達成するためにはるかに自然な方法があります:

> past = Time.now.beginning_of_year
2018-01-01 00:00:00 +0100

> (Time.now - past) / 1.day
219.50031326506948
2
MattW.