2

私のapplication.rb:

config.time_zone = 'Moscow'
config.time_zone = "(GMT+04:00) Moscow"
config.active_record.default_timezone = 'Moscow'
config.active_record.default_timezone = :local

このコマンドを実行すると、次のようになります。

1.9.3-p362 :001 > Time.now
 => 2013-02-14 14:18:42 +0400
1.9.3-p362 :002 > Time.zone.now
 => Thu, 14 Feb 2013 10:18:52 UTC +00:00

したがって、db には 10:18:52 UTC +00:00 が表示されます。しかし、Time.Now のように、そのような時間を表示するには、何をどのように構成すればよいのでしょうか? (新しい行を db に挿入するときは、Time.now で指定された時刻を確認する必要があります。何を構成すればよいでしょうか?)

サーバーの時間はモスクワです....

また、dbはmysqlです

4

2 に答える 2

2

application.rb に次の行を含めます。

config.time_zone = 'Moscow'
config.active_record.default_timezone = 'Moscow'

タイムゾーンを設定したので、次のようにします。

Time.now
=> 2013-02-14 11:14:46 +0000 
Time.current
=> Thu, 14 Feb 2013 15:14:48 MSK +04:00 
user = User.create(name: 'test')
=> #<User id: 6, name: "test", created_at: "2013-02-14 11:15:00", updated_at: "2013-02-14 11:15:00"> 
user.created_at
=> Thu, 14 Feb 2013 15:15:00 MSK +04:00 

ご覧のとおり、Rails は時刻をUCT +0000(非常に巧妙に) として保存しているにもかかわらず、Rails インターフェイスは必要なオフセットを提供しています。などのオブジェクトを呼び出すとuser.created_at、データベース時間がオフセットされてゾーン時間が返されます。
ユーザーごとに異なるタイムゾーンを設定できるため、非常に便利です。時刻はオフセットなしで保存されますが、各ユーザーは同等のタイム ゾーンを取得します。

Time.now+00:00 を返します。タイムゾーンは関係ありません。
Time.currentと同じTime.zone.nowです。

于 2013-02-14T10:36:10.847 に答える