21

Rails では、DateTime.now.utc と Time.current をいつ使用するかについてのガイダンスについて少し混乱しています。フレームワーク内では、特に異なるバージョンで、どちらが最適かについて意見が分かれているようです。

UTC オフセットがゼロのタイムスタンプを生成し、タイムゾーンが UTCDateTime.now.utcのタイムスタンプを生成するように見えます。これは微妙な違いのように思えますが、多くの場合 (DST の計算など) では非常に重要です。Time.current.utc

いつ を使用する必要がDateTime.now.utcあり、いつ を使用する必要がありますTime.current.utcか? DateTime.now.utcの代わりに使用する理由はありますTime.current.utcか?

4

1 に答える 1

55

.currentの代わりに使うべきだと思います.now

との違いは、.currentRails環境が設定されているものを使用しながら、サーバーのタイムゾーンを使用することです。設定されていない場合は、と同じになります。.now.now.current.current.now

Time.current

Time.zoneまたはconfig.time_zoneが設定されている場合はTime.zone.nowを返し、それ以外の場合はTime.now返します

DateTime.current

Time.zoneまたはconfig.time_zone が設定されている場合はTime.zone.now.to_datetimeを返し、それ以外の場合はTime.now.to_datetime返します

于 2012-10-05T14:52:51.447 に答える