0

日-時間-分形式で日時の差を取得する必要があるrubyアプリケーションがあります。このimの場合、次の関数を使用します

def duration  (from_time, to_time)
   from_time = from_time.to_time if from_time.respond_to?(:to_time)
   to_time = to_time.to_time if to_time.respond_to?(:to_time)
   distance_in_seconds = ((to_time - from_time).abs).round

   secs  = distance_in_seconds.to_int
   mins  = secs / 60
   hours = mins / 60
   days  = hours / 24

   if days > 0
     "#{days}d #{hours % 24}h"
   elsif hours > 0
     "#{hours}h #{mins % 60}m"
   elsif mins > 0
     "#{mins}m"
 end
end

上記は別の関数からこのように呼び出されます

duration(aw_updated, Time.now)

しかし、時々それは私に間違った結果を与えます、

上記の値を表示すると

aw_updated is 2012-09-19 04:23:34 UTC
Time.now is   2012-09-19 16:33:09 +0530
Time.now.utc is 2012-09-19 11:03:09 UTC 

Diff is 6h 26m

しかし、私のシステム時刻は2012-09-1916:33:09です。

どこで間違っているのかわからない、UTCの問題?

お知らせ下さい

4

2 に答える 2

0

正解するutcには、この場合、両方の時間が同じタイムゾーンである必要があります

つまり、どのに変換2012-09-19 16:33:09 +0530されているので、差は6時間26分です。utc2012-09-19 11:03:09 UTC

于 2012-09-19T11:08:13.017 に答える
0

これをコメントとして入力しますが、まだ入力できません。

あなたの機能については詳しく調べていませんが、最初から作成する必要がありますか?ビルドされたDateTimeクラスでRubyを使用してみませんか。文字列をDateTimeオブジェクトに解析し、計算を実行し、strftimeメソッドを使用して、必要な形式で時刻を出力できます。

于 2012-09-19T11:09:03.967 に答える