web-dev-qa-db-ja.com

DateTime.nowまたはTime.now?

Railsアプリケーションで2つのうちどちらを使用すればよいですか。

DateTime.now or Time.now

アプリケーションで両方を使用することに害はありますか?

上記の(now)の例の場合、2つの間に違いはありますか? (私の現在のシステムでは、両方が同時に表示されています)

34
Zabba

Time.nowについて(DateTime.nowではない):

作成されるオブジェクトは、システムクロックで使用可能な解像度を使用して作成されるため、秒の小数部が含まれる場合があります。

a = Time.new      #=> Wed Apr 09 08:56:03 CDT 2003
b = Time.new      #=> Wed Apr 09 08:56:03 CDT 2003
a == b            #=> false
"%.6f" % a.to_f   #=> "1049896563.230740"
"%.6f" % b.to_f   #=> "1049896563.231466"
14
slandau

(Date)Time.currentの代わりに(Date)Time.nowを使用します

RailsはTimeオブジェクトとDateTimeオブジェクトを拡張し、currentプロパティを含めて、Rails環境が(デフォルト= UTC)、サーバー時間とは対照的に(何でもかまいません)。

これは重要です。ユーザー入力または表示のタイムゾーン間で変換する場合を除いて、常にUTC時間で作業する必要がありますが、多くの本番システムはデフォルトでUTCではありません。 (HerokuがPST(GMT -8)に設定されているなど)

記事を見る ここ

47
Yarin

アプリケーションのタイムゾーンで時刻を取得したい場合は、Time.zone.nowを呼び出す必要があるため、通常はそれを使用します。

Time.nowDateTime.nowはどちらも、システムの時間を返します。これは多くの場合UTCに設定されています。

7
KurtPreston