2010-12-11 4 views
2

私はRubyを初めて使ったJava開発者です。この質問があまりにも基本的なものであれば、簡単に私に行ってください。 :)私は誰かが正しい方向に私を向けることができるかどうかを学ぶためにここにいる。Rails DateTimeオブジェクトが期待したものではありません

時間を扱うアプリケーションを作成しており、タイムゾーンを考慮する必要があります。私は、Rubyがタイムゾーンを扱うために提供しているものが不思議で、Railsが必要なものを行うべきDateTimeクラスを提供していることが分かりました。 http://api.rubyonrails.org/classes/DateTime.html#method-i-in_time_zone

ただし、DateTimeを作成すると、期待した方法がないようです。誰かがここで何が起こっているのか説明できますか?ここで私はIRBで見ているものです:私はレールを必要とするまでのDateTimeが定義されていないので

>> dt = DateTime.now 
NameError: uninitialized constant DateTime 
    from (irb):1 
>> require 'rails' 
=> true 
>> dt = DateTime.now 
=> #<DateTime: 212158799144191849/86400000000,-1/4,2299161> 
>> dt.respond_to? "in_time_zone" 
=> false 

、私はRailsの日時を使用していたと仮定が、私が期待していた方法を持っていないようですドキュメントに基づいています。

答えて

7

DateTimeはコアクラスであり、Dateの一部です。あなたのコードにrequire 'date'がある場合、それは利用可能です。 Railsを使用してアクセスする必要はありません。

require 'date' 

asdf = DateTime.parse(`date`) 
asdf # => #<DateTime: 2010-12-10T21:41:59-07:00 (212158802519/86400,-7/24,2299161)> 
asdf.class # => DateTime 
asdf.to_s # => "2010-12-10T21:41:59-07:00" 

あなたは後にしているクラスは、Railsのの一部であるactivesupportの、の一部ですが、あなたはそれにアクセスするためのRailsをロードする必要はありません。

require 'active_support/all' 
asdf.in_time_zone # => Fri, 10 Dec 2010 21:43:42 -0700 

または

require 'active_support/core_ext' 
asdf.in_time_zone # => Fri, 10 Dec 2010 21:59:48 -0700 

RubyのTimeクラスもタイムゾーンをサポートしていますので、get familiar with itにすることもできます。

+0

これは、自分のような初心者のための良い情報です。しかし、私はまだ私がリンクを提供したRailsのドキュメントに記載されているin_time_zoneメソッドを持っていません。私は、Railsにタイムゾーンを扱うためのサポートが強化された、強化されたDateTimeクラスを持っている(あるいは単に既存のものを強化している)という印象を受けています。私が間違っている? – spaaarky21

+0

Railsは標準クラスを強化しています。私はタイムゾーンとオフセットを試してみる必要があるときにタイムを使用します。 –

+0

それでは、どの時点でRailsがこれらの機能強化を行っていますか? Timeを使用しても、同じ問題が発生します。タイムゾーンを扱う際にRubyのTimeクラスはかなり小さく、Railsの機能強化が必要です。 – spaaarky21

0

時間帯サポートのためにレール全体をスタックする必要はありません。単にactive_supportをインストールして使用することができます。でも、tzinfoの宝石をチェックできます。

+0

私はここで何が起こっているのだろうかと思っています。私はactive_supportを要求してみましたが、うまくいきました(「active_support」がtrueを返す必要があります)が、DateTime.nowにはまだin_time_zoneのような余分なメソッドがありません。 – spaaarky21

関連する問題