PHPでの日付比較について。


今まで strtotime() で unixタイムスタンプにして比較してたのですが、
strtotime() はバグがあったりとあんまりよくないと聞きました。

mktime()だと面倒ですし、

他にどうやってやるのが効率や分かりやすさの面でいいのでしょうか?

また、strtotime()は実際使うべきではないですか?

回答の条件
  • 1人3回まで
  • 登録:2008/08/05 12:43:13
  • 終了:2008/08/07 11:28:42

回答(2件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912008/08/05 12:56:08

ポイント30pt

検索してみると確かにバグの情報は見つかりますが、PHP5.1.0 で修正されているようです。

通常の日付比較程度の仕様で、これ以降のバージョンであれば現状のままでよいのではないでしょうか。


それ以前のバージョンであれば、面倒でもmktime を使用した方がよいと思います。


http://jp.php.net/strtotime

id:pirokyun

結局はmktimeですかね・・・。

ありがとうございます!

2008/08/07 11:25:25
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/08/05 13:43:13

ポイント40pt

その日付比較は、システムの中で重要な役割を担う部分でしょうか。であれば、コードの効率性より、結果の確実性を求めるべきです。

strtotime は便利な関数ですが、バグが無かったとしても、投入する日時テキストのバリデーションチェックが必須です。それと、タイムゾーン環境変数TZの設定も必須です。


時刻まで必要ないのであれば、date_parse関数で年月日を分解し、checkdate関数に通して整合性チェックするのが無難でしょう。必要に応じて、あり得ない年号が入力されていないかどうかのチェックを加えてください。

逆に、ここまでやると、あとは mktime を利用できるわけですが‥‥。


環境変数TZの設定には、date_default_timezone_set関数が便利です。

id:pirokyun

やはり日付を扱うときには面倒でもmktimeを使ったほうがいいと言うことですね!

ありがとうございます!

2008/08/07 11:27:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません