Rubyで日付・時刻を扱うとき、どのクラスを使う?

Rubyで日付・時刻を扱う際には、(1)Timeクラス, (2)Dateクラス, (3)DateTimeクラスと、いったいどれを使うべきなのか迷う。


(1)Timeは、組込クラスでC実装。
(2)Dateと(3)DateTimeは、標準ライブラリ'date'に含まれるクラスでRuby実装。


(1)Timeクラスは、実装環境依存により、2038年問題(1970年1月1日〜2038年1月19日までしか扱えない)が発生し得る。
(2)Dateクラスは、2038年問題の心配はないが、扱えるのは日付のみで、時刻は扱えない。
(3)DateTimeクラスは、Dateクラスのサブクラスで、Dateクラスと同様に、'date'ライブラリをrequireする必要はあるが、2038年問題の心配もないし、日付も時刻も扱える。


表面的な仕様としては、(3)DateTimeクラスが最強だが、実装がRubyであるため、2038年問題の可能性よりも、性能を重要視する場合には、(1)Timeの方が有利とも言えるようである。


結局、何を使うべきかのモヤモヤは、スッキリとは解消されたわけではないが、自分としては、これらの違いを十分に認識した上で、通常は論理的な仕様を重視して、DateTimeを使うようにしようと思う。