2

RubyでDateTimeを操作する方法についてはまだ少し混乱しています。GMTをデータベースに保存したいのですが、少なくともそうなると思います。しかし、どのようにして使用可能なローカライズされたDateTimeを作成するのでしょうか。

date = Date.new(2012, 11, 24)
 => #<Date: 2012-11-24 ((2456256j,0s,0n),+0s,2299161j)> 
new_appt = DateTime.new(date.year, date.month, date.day, 10, 0, 0)
 => #<DateTime: 2012-11-24T10:00:00+00:00 ((2456256j,36000s,0n),+0s,2299161j)> 

このDateTimeオブジェクトのGMTオフセットは+00:00です。指定された日付が夏時間を採用しているかどうかに応じて、-07:00または-08:00にします。最後のパラメータ(+7または+8)を追加できますが、計算方法は?

与えられた日付にタイムゾーンオフセットが何であるか(またはそうなるか)を伝え、それをDateTime.newオブジェクトに組み込んで、正しく保存(および取得)できるようにする方法はありますか?

4

1 に答える 1

5

詳細については、ドキュメントを参照してくださいTime

変数を作成するときに を使用するTime.localと、DST が正しいかどうかを判断できます。例: でアポイントメントを作成するに3.30 pmは: (私の現地時間は CST です)

Time.local 2012, 10, 20, 15, 30
=> 2012-10-20 15:30:00 +0800 

データベースに保存するときは、UTC として保存することをお勧めします。つまり、variable.utcユーザーに再度レンダリングする必要がある場合は、variable.localtimeもう一度呼び出すだけです。これにより、JavaScript などの他の言語で時間を使用することが非常に簡単になります。

于 2012-10-19T23:09:00.293 に答える