• 締切済み

time型のデータから時間だけを条件文に入れたい

お世話になっています。 またしても疑問があり、この場をお借りします。 変数$my_timeには、time型で「10:00:00」が格納されています。 変数$my_time2には、同じくtime型で「15:00:00」が格納されています。 $my_timeと$my_time2は17:00:00~23:00:00でなければならないという仕様なので、if文の条件にその旨指定したいのですが、time型のデータから「時間」の部分だけを参照するにはどうしたらよいのでしょうか? 助言をお願いします。

みんなの回答

  • teala
  • ベストアンサー率42% (6/14)
回答No.3

No1です >No2様 >まず、time型というのはデータベース上の型のことだと思うので、PHPの変数に格納した時点で文字列として扱われているはずです。 time型については今回初めて知り、お恥ずかしい限りです^^; 文字列として17:00:00というものが取り出されるのであれば、 文字列型を区切り文字ごとに配列に格納することができるexplode関数も有効かと思われます。 <? $str = "17:00:00"; $time_arr = explode( ':', $str ); // 結果 /* $time_arrの中身は。 [0] => 17 [1] => 00 [2] => 00 */ ?> 上記のような感じで配列を作成し、defineなどで 0 = hour, 1 = minute のように配列を参照するのもありかと思います。

maa_rico
質問者

お礼

回答ありがとうございました。 データベース上にtime型で登録されている仕様です。 説明不足ですみませんでした。 文字列として扱うということを初めて知りました。 文字列でしたらバラバラにできますね! わかりやすい例をあげてくださって大変参考になりました。

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.2

本来の目的からは外れてしまいますが、時間が24時間単位で表現されているならばこういう方法でも比較可能です。 まず、time型というのはデータベース上の型のことだと思うので、PHPの変数に格納した時点で文字列として扱われているはずです。 そこで、文字列中の「:」をstr_replace()で取っ払ってしまいます。 それで得られた文字列(10:00:00ならば100000)を(一応)整数にキャストしたものが170000から230000の間に収まっているか判定します。 強引ですがこんな方法もあるということで。

maa_rico
質問者

お礼

回答ありがとうございました。 「;」を取ってしまう考え方、大変勉強になりました。 試してはいないですが、読んでみて意味が理解できました。 覚えておこうと思います。

  • teala
  • ベストアンサー率42% (6/14)
回答No.1

今回の質問にあるtime型というものは、 タイムスタンプのことでよろしいでしょうか? タイムスタンプから時間のみを抽出する場合には、 以下のように記述すれば良いかと思います。 <? $timestamp = "15:00:00のタイムスタンプ"; $hour = date( 'H', $timestamp ); ?>

関連するQ&A