0

config.time_zone = 'Mumbai'この行をapplication.rbファイルに追加して、Rails アプリでタイム ゾーンをインド タイム ゾーンに設定しました。

テーブルに日時フィールドt.datetime :check_inがあります。このcheck_in列には、このようにサーバー時間を節約していますPerson.check_in = DateTime.now。このように保存すると、アプリで設定されたタイムゾーンで、時間が正しく保存されます。その後、何らかの理由でこのように更新するPerson.check_in = "24/08/2015 11:50 AM".to_datetimeと、構成したタイムゾーンで時間を節約できません。以下は私のレールコンソール出力です:

prashant@prashant-pc:~/client_proj/template$ rails c
Loading development environment (Rails 4.1.5)
2.2.2 :001 > check_in =  DateTime.now
 => Mon, 24 Aug 2015 11:41:16 +0530 
2.2.2 :003 > "24/08/2015 11:42  PM".to_datetime
 => Mon, 24 Aug 2015 23:42:00 +0000 
2.2.2 :004 > 
4

3 に答える 3

2

ActiveSupport::TimeWithZonein_time_zoneから使用

"2015-08-14 14:38".to_datetime.in_time_zone('Mumbai')
=> Fri, 14 Aug 2015 20:08:00 IST +05:30

"2015-08-14 14:38".to_datetime.in_time_zone('Eastern Time (US & Canada)')
=> Fri, 14 Aug 2015 10:38:00 EDT -04:00

Time.now.in_time_zone("Mumbai")
=> Sat, 22 Aug 2015 12:38:32 IST +05:30
Time.now.in_time_zone("Pacific Time (US & Canada)")
=> Sat, 22 Aug 2015 00:08:21 PDT -07:00

Time.zone.local実際には、 を使用するなど、同じことを行う方法がいくつかありますTime.zone.parse。その他の例については、上記のリンクを参照してください。

正確な質問に答えて、ファイルにtime_zone構成されたものを渡すには、これを使用する必要があります。application.rb

check_in =  DateTime.now
check_in.in_time_zone(Rails.application.config.time_zone).to_datetime
于 2015-08-22T07:03:12.253 に答える
2

残念ながら、これはto_datetime関数の設計上の動作です。

この他の質問は、あなたが求めているものです。次の代替手段が提供されます。

Time.zone.parse('24/08/2015 11:50  AM').to_datetime

あるいは:

"24/08/2015 11:50  AM".to_datetime.in_time_zone("Mumbai")
于 2015-08-22T07:07:43.240 に答える