2

時間を表す少なくとも 3 つのタイプがあります: TimeDateおよびDateTime(from ActiveSupport)。

私の問題は、DateTime完全に置き換えることができDateますか? つまり、 を使用できる場合、代わりDateTimeに使用する理由はありますか?Date

4

3 に答える 3

1
require 'date'
d = Date.today
dt = DateTime.now
p Date.public_methods - DateTime.public_methods
#=>[:today]
p DateTime.public_methods - Date.public_methods
#=>[:now]
p d.public_methods - dt.public_methods
#=>[]
p dt.public_methods - d.public_methods
#=>[:hour, :min, :minute, :sec, :second, :sec_fraction, :second_fraction, :offset, :zone, :new_offset]

DateTime は Date のサブクラスです。DateTime を使用すると、todayClass メソッドが失われ、代わりに取得nowされます。インスタンス メソッドが失われることはありません。

于 2012-05-31T15:57:10.223 に答える
1

たとえば、誕生日やイベントが行われる特定の日など、日付のみを保存する場合は、日付のみを使用する方が簡単です。そうすれば、タイム ゾーンの違いやタイム ゾーンの計算に起因する問題がなくなります。DateTime を使用する場合、午前 0 時から -2 時間のオフセットを追加すると、前日の午後 10 時になります。

于 2012-05-31T15:57:18.387 に答える
0

Date は、タイムゾーンとともに、時間に関する情報を保存しません。したがって、ある時点で時間データを使用する必要がある場合、問題が発生する可能性があります。

このリンクを参照してください。どのクラスをいつ、どのように使用する必要があるかが明確にわかりました。

于 2012-05-31T14:39:15.000 に答える