• ベストアンサー

時刻どうしの引き算

タイムカードを作っています。 $hensuu1(出社時間)= "09時00分" $hensuu2(退社時間)= "16時30分" ↑のような感じで、変数の中に"○時○分"という値が入っていて、この$hensuu2から$hensuu1を引いて $hensuu3(合計時間)= "6:30" という風に、退社時間から出社時間を引いた時間(一日の仕事時間)を出したいのですが、この場合どういう方法が簡単でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

こんな感じでどうでしょう ---------------------------------------------------------------- <?php $hensuu1 = "09時00分"; #(出社時間) $hensuu2 = "16時30分"; #(退社時間) print $hensuu3=timediff($hensuu1, $hensuu2); #引数の時間のフォーマット:hh時mm分 #返値:hh:mm function timediff($stime, $etime){ $stime = mb_ereg_replace("分","",$stime); $stime = mb_ereg_replace("時",":",$stime); $stime = strtotime($stime); $etime = mb_ereg_replace("分","",$etime); $etime = mb_ereg_replace("時",":",$etime); $etime = strtotime($etime); $diff=$etime-$stime; $h=(int)($diff/3600); $m=(int)($diff % 3600 / 60); return sprintf("%02d:%02d", $h, $m); #return strftime("%H:%M", $etime-$stime)."\n"; #これは正しくない } ?>

keike-
質問者

お礼

ご回答ありがとうございます。おかげさまで完成できそうです。

その他の回答 (1)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

全然関係ない話です。 必要のない場合読み飛ばしてください。 残業で日付が変わることがある場合、年月日も取ったほうが無難です。 (過去の履歴参照の点からも取ったほうがいいきがしますが) で、 mktime (時,分,秒,月,日,年,サマータイム) int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]]) でUNIXタイムスタンプにしてやれば処理は簡単です。 むしろ最初からUNIXタイムスタンプで取ったほうが手っ取り早いです。 失礼しました。

keike-
質問者

お礼

ご指摘ありがとうございます。実は、年月日は他の変数に取っていたのですが説明不足でした。UNIXタイムスタンプの使い方は大変参考になりました。ありがとうございました。

関連するQ&A