• 締切済み

PHP MySQL を使った時間の減算

時間の減算で、 例) 09:00:00 - 07:30:00 = 01:30 もしくは、 09:00:00 - 07:30:00 = 1.5 と表示させたいです。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1212988297?fr=rcmd_chie_detail ここを参考にして文を作りましたが、エラーとなりました。 また、subtime()を使って文を作ってみたのですが、 やはりだめでした。 現状は、 select文をmysql_query()して、mysql_fetch_array()した項目を使って 計算しています。 $col["ComTime"] - $col["EndTime"] としてしまうと、ComTimeが19:30:00、EndTimeが18:00:00の場合、 2と表示されます。 selectで取り出した項目の形式が、00:00:00ではないのでしょうか。。。 恐縮ですが、ご教授願います。

みんなの回答

  • tom233
  • ベストアンサー率17% (61/352)
回答No.2
mkhkck
質問者

補足

ここを見て、subtime()を見ました。 しかし、うまくいかなかったのです。

すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

今回の件はMySQLはあまり関係なさそうですが・・・ たとえばこんなかんじじゃないですか? <? $str1="09:00:00"; $str2="07:30:00"; print datesub($str1,$str2)."<br>"; $str1="19:30:00"; $str2="18:00:00"; print datesub($str1,$str2)."<br>"; function datesub($str1,$str2){ $date1=strtotime("2000/01/01 ".$str1); $date2=strtotime("2000/01/01 ".$str2); $sub=$date1-$date2; return date("H:i:s",$sub - 9*60*60); } ?>

mkhkck
質問者

お礼

functionの問題は解決しました。 しかし、結果は出るようになりましたが、値が全て「1」となります。 どうしてでしょうか。。。

mkhkck
質問者

補足

>yambejpさん ご回答ありがとうございます。 以下のように用いましたが、functionの箇所でエラーとなります。 datesubを改名してるのですが、2つは同じ名前を使えないとのことで、 違う名前を付けていますが、うまくいきません。 どうしてでしょうか。。。 恐縮ですが、ご教授願います。 <? while ($col){ $body .= "<tr>\n"; $body .= "<td>" . $col["WorDate"] . "</td>\n"; $body .= "<td>" . $col["Denpyo"] . "</td>\n"; $body .= "<td>" . $col["ComName"] . "</td>\n"; $body .= "<td>" . $col["ChaName"] . "</td>\n"; $body .= "<td><a href='denpyodetail?" . $col["GenName"] . "'>" . $col["GenName"] . "</a></td>\n"; $str1=$col["ArrTime"]; $str2=$col["DepTime"]; function date_sub($str1,$str2){ $date1=strtotime("2000/01/01 ".$str1); $date2=strtotime("2000/01/01 ".$str2); $sub1=$date1-$date2; $go = date("H:i:s",$sub1 - 9*60*60); } $body .= "<td>" . $go . "</td>\n"; $str3=$col["ComTime"]; $str4=$col["EndTime"]; function date_time($str3,$str4){ $date3=strtotime("2000/01/01 ".$str3); $date4=strtotime("2000/01/01 ".$str4); $sub2=$date3-$date4; $come = date("H:i:s",$sub2 - 9*60*60); } $body .= "<td>" . $come . "</td>\n"; $body .= "</tr>\n"; } $body .= "</table>"; print $body; ?>

すると、全ての回答が全文表示されます。

関連するQ&A