• 締切済み

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型のデータから「時間」の部分だけを参照するにはどうしたらよいのでしょうか? 助言をお願いします。

  • PHP
  • 回答数3
  • ありがとう数2

みんなの回答

  • 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

  • If文の条件文の書き方

    お世話になります。 Excelでマクロを作成しております。 内容:  あるセルに、X<=300 というような条件を入れておきます。  ある値、たとえば、500 が来たときに、Xに代入して、  500<=300 という条件式を作り、それが、正しいか、正しくないか  の結果を求めたいと思っています。 このとき、if文の条件文は、値によって、変わらなくてはいけないので、 文字列の置き換え等をして、変数として条件文を作ると、「型が違います」 のエラーになります。 どのように条件文を作ればいいでしょうか?? hani = Cells(1,1).value 'セル1,1に、X<=300 が書かれています。 exp = Replace(hani, "X", 500) '"X"を500と置き換えます。 If exp Then Check = 0 Else Check = 1 End If よろしくお願いします。

  • 条件が複数ある場合のif文の書き方

    条件が一つだけの時は上手く動いたのですが、条件を複数にした場合はどう書いたらいいのかわからず、質問させていただきました。 『おしえて!!ACTION SCRIPT』という本を見ながら、Flashを作っています。 その中ではif文の書き方は if(条件式が正しかったら){  実行するスクリプト; } となっていますが、変数が複数あって、そのすべてが合致しないと指定のフレームに飛べないようにするためにはどう書いたらいいでしょうか? if(a==1){ gotoAndPlay(2); } if(b==1){ gotoAndPlay(2); } if(c==1){ gotoAndPlay(2); } と、続けて書くとa=1の時点でフレーム2に進んでしまうことになりますよね? そうでなく、a.b.c全ての変数が1の場合に、フレーム2に飛ぶようにしたいのです。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 条件文でelseはつけるべき?

    if文で条件文を作るときに、どういう風に作れば最適なのか考えています。 「男」か「女」かを判断する時のif文として、データ的にどちらかしかないので、以下のようになると思います。 --------------------------- if 「男」 {   処理1 } else if 「女」 {   処理2 } --------------------------- 仕様的にもどちらかしかないのですが、こういう場合でもelseを付けた方が良いのでしょうか? --------------------------- if 「男」 {   処理1 } else if 「女」 {   処理2 } else {   エラー処理 } --------------------------- 後々の仕様変更で、判断できない場合は「不明」などが追加される可能性もあると思います。 その場合に、仕様変更に対応してないとエラー処理が動くようにしておくべきでしょうか? みなさんは、必ずelseを書いてますか?

  • if文の条件式について

    ASPのIf文の条件として varDateというある日付の入った変数を システム日付プラス1日より過去のものはtrueという 条件をつくりたいのですが、どう記述すればよろしいでしょうか? よろしくお願い致します。

  • IF文の条件で、ワイルドカードのようなもの

     IF文で条件にワールドカードのような指定の仕方はできませんか? 日本語で書いたら IF(頭文字に山がつく苗字の人だったら,OK,そうでなかったらNG) ってできますかね? あと上の条件部分で、山中さんと、山田さんだったら、OKというAND ってつなげそうな文はどのようにすればよいでしょうか?

  • 条件にマッチした行数のカウント

    perl 初心者です。 while (<>) { if (/条件/) {    print; } } 複数のファイルの中で、if文の /条件/ で指定した部分にマッチした行数をカウントして変数に入れたいのですが、ここからどうすればいいのかわかりません・・・。 初歩的な質問で申し訳ないのですが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • if文などで使用される条件式で、同じような条件をまとめる方法

    $keyという変数には、aiueo、kakikukeko、sasisuseso、tatitutetoなどの文字列が入ると仮定して、if文でaiueo、sasisusesoの文字列の時のみ、実行させないようにしたい場合、通常は if ($key != "aiueo" && $key != "sasisuseso") {   処理 } としなければなりません。しかし、これだともっと条件が多くなった場合、非常に見づらくなってしまいます。 「$keyと言う変数が、○○、××、■■、・・・以外の値の時」という条件を各場合、もっと簡潔にまとめて書く方法って無いでしょうか? 例えば、if ($key != ("aiueo" && "sasisuseso"))みたいな感じで。 (switchを使う手もありますが、これは他の変数($a == 0など)に関する条件を組み合わせたい場合、面倒になるので) もし、方法などありましたら、教えていただければと思います。

    • ベストアンサー
    • PHP
  • switchでの条件分岐の書き方を教えて下さい。

    こんにちは。 いつもお世話になっております。 またわからない事が出てきてしまったので、どうか ご指導よろしくお願いいたします。 簡単な検索機能をつくりたくて、思考錯誤 しております。 フォームからPOSTで受け取る変数の数は 10個あります。 それぞれの変数が ””でなければ、受け取った 変数を元に、SQL文がかわってゆく。 という事がしたいのです。 10個もあるので、たとえば 変数が$_POST["a"]から$_POST["j"]まであった時に if文を使うとすると if($_POST["a"] != "" && $_POST["b"] == "" && $_POST["c"] != "" (略)){ $stt = "検索したい予定のSQL文1"; }elseif($_POST["a"] == "" && $_POST["b"] != "" && $_POST["c"] != "" (略)){ $stt = "SQL文2"; ・ ・ ・ と言う風に、ものすごいにはなると思うのですがifを つなげていけば良いのかな、と思うのです。 PHPの基礎HPなどを検索してみると、SWITCHを 使えば、多岐に分岐するIF文を、見やすくできる、 と書いてあったので、使ってみたいのですが、書き方の 説明によると switch(変数){ case 値1:  条件を満たす時の処理1 break; case 値2:  条件を満たす時の処理2 default: } と紹介してあったのですが、今回わたしがしたい場合の 条件分岐だと、変数は一つではなく、ある変数は空でこの変数は値が何か入っていて、またもう一つの変数は 空で・・・の時は、このSQL文、というように させたい場合には、switchでどうかけばよいのか わからないのです。 それとも、こういう条件分岐の場合は、switchを 使うべきではないのでしょうか・・・? どうかご指導よろしくお願いいたします。  

    • ベストアンサー
    • PHP
  • if文の条件式の書き方について

    現在VC++2005でプログラムを作成しています。 そこであるテキストファイルをテキストボックスに表示してからその表示されている内容の1行目をif文を使って判断するというものを作っています。 そこで、質問なのですがif文の条件を作るときに文字列として条件を入れたい場合はどのようにしたら良いのでしょうか? 現在は7:00ならばというものなのですが、読み込んだ文字列に7:00以外のものが入っていてもそのまま判断されてしまうのできっと条件式のところが問題だと思うのですが。 下に作成中のコードを書きますので、良かったらご教授お願いします。 ********************************************************* String^ ss; ss=textBox3->Text; ss=textBox3->Lines[0]; textBox5->Text=ss; String^ time; time=textBox5->Text; if (char time='7:00'){ MessageBox::Show("7時"); } else { MessageBox::Show("ミス"); } **********************************************************

  • if文の判定条件('||'と'&&'の使い方)

    ○if文の判定条件への理解が弱いため、下記プログラムを作成し、 疑問があったため、質問をしたいと思っております。 #include<stdio.h> #include<string.h> int main() { char moji[]= "A"; /***********************************************************/ if( 0 != strcmp( moji , "A" ) || strcmp( moji , "B" ) ) ^^(1) /***********************************************************/ { printf( "文字不一致" ); } else { printf( "文字一致" ); } return (0); } ○質問 「/*/」で囲ったif文の判定箇所になりますが、 この判定条件は"配列mojiに格納されている値が"A",または"B"以外の" ときに、画面上に「文字不一致」を出力します。そうでなければ 「文字一致」を出力します。 今回、配列mojiには"A"が格納されており、「文字一致」が画面に 出力されるはずですが、「文字不一致」が出力されてしまいます。 判定条件が誤っていると思い、色々と試したところ、(1)の箇所を 「&&」にしたときに、「文字不一致」が出力されます。 「||」(論理和)と「&&」(論理積)が理解できていないと思われ、 この部分を交えて、何故「&&」にしないと「画面不一致」と出力 されないのかを、ご教授の程お願い致します。