2011-12-22 18 views
18

DateTimeクラスには便利なメソッドがいくつかありますが、strtotime,mktimeおよびstrftime(など)のようなネイティブPHPの日付関数よりも全体的に優れているようです。しかし、私はそれを使用すべきではない何かの欠点または理由はありますか?DateTimeクラスとネイティブPHPの日付関数

私が考えることができる唯一の理由は、関数を使用するよりもクラスのインスタンス全体を作成する方がコストがかかるかもしれないということです。

  • これに同意しますか?
  • 簡単なもののためのDateTimeオブジェクトは私たちには全く意味がありますか?
  • 他にも欠点はありますか?
  • これらの2つのオプションを常に切り替えるのはちょっと混乱しているようです。そのため、私がやりたいことが何であるかを明確にしたいと思います。私の決定のための

    二つの例は次のようになります。

    • 二つの日付

    答えて

    36

    間の時間を計算するローカライズされた値

  • に日付を変換する、あなたの心配がクラスのインスタンスを作成することがあるということであるならば高価で、パフォーマンスが低下すると、間違ったツリーで吠えているのではないかと心配しています。それが理にかなっていれば、実績のあるOOのアプローチを使用するかどうかは決して考えてはいけません。特定の日付の計算を実行するためにDateTimeクラスを使用することが理にかなっている場合は、それを使用してください。あなたが100万のDateTimeオブジェクトを作成するなど、何か狂ったことをしない限り、あなたのアプリがそれを感じるポイントまで高価ではありません。

    DateTimeが優れている理由は、オブジェクトを作成するときにタイムゾーンを指定することによって夏時間の心配が軽減されるからです。また、日付間の差異を取得したり、異なるオブジェクト間の間隔を取得することも簡単です。それは基本的に心配とコーディングの量を削減します(ただし、時々間違っていることを認めますが、PHPの5.4リリースでうまくいけばうまくいきます)。

    ボトムライン - 私はいつも使っていました。

  • +5

    さらに、32ビットのPHP環境であっても、古生物学者または宇宙学者が宇宙の始まりや終わりを勉強するのに十分です。 –

    +0

    DateTimeの「便利さ」を見ていますが、私はちょうど私の質問に追加したもののような単純なもののためにそれは? – Anonymous

    +4

    私は、 'mktime'または' strtotime'関数を使ってみましょう。日、年、月、時などを表すパラメータの順序が必要です。 'DateTime'では、' $ date = DateTime :: createFromFormat( 'm H:s D-Y'、$ weird_user_input); 'は、unixのタイムスタンプ、または私が望む他の日付形式にフォーマットすることができます。オブジェクトを作成している間にすぐにタイムゾーンを指定することもできます。そう、はい、私は間違いなく手続き的な方法は私がより良い助けになるかわからないので、私は間違いなくそれを使用するだろう。 –