Railsアプリケーションで2つのうちどちらを使用すればよいですか。
DateTime.now or Time.now
アプリケーションで両方を使用することに害はありますか?
上記の(now
)の例の場合、2つの間に違いはありますか? (私の現在のシステムでは、両方が同時に表示されています)
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"
(Date)Time.current
の代わりに(Date)Time.now
を使用します
RailsはTime
オブジェクトとDateTime
オブジェクトを拡張し、current
プロパティを含めて、Rails環境が(デフォルト= UTC)、サーバー時間とは対照的に(何でもかまいません)。
これは重要です。ユーザー入力または表示のタイムゾーン間で変換する場合を除いて、常にUTC時間で作業する必要がありますが、多くの本番システムはデフォルトでUTCではありません。 (HerokuがPST(GMT -8)に設定されているなど)
記事を見る ここ
アプリケーションのタイムゾーンで時刻を取得したい場合は、Time.zone.now
を呼び出す必要があるため、通常はそれを使用します。
Time.now
とDateTime.now
はどちらも、システムの時間を返します。これは多くの場合UTCに設定されています。