スレッド表示 | フラット表示〕 全トピック 923 件中 10 番目 次≫ ≪前

時間計算

created: 2011-04-04 18:07 | modified: 2011-04-06 19:28 | reply: 2

[4399] 時間計算

user: Me | created: 2011-04-04 18:07
いつも拝見させてもらってます。
今回時間の計算で悩んでて何日も格闘してますがうまくいかないので、
質問させてください。
今作ってるのは
スタート時間と終了時間を引き算して残りじかんを表示したいです。

DBにスタート時間と終了時間は登録してます。
DBでも計算できると思うのですがさっぱりです・・・。

DBにはid,start,end,work_timeとして

$start = 18:00
$end = 19:30
$work_time = 90

と、いう風に登録してます。
実際には今のところ$work_timeはしようしてませんがw

今は↓のようなロジックですがうまくいきません。

$b = date("H:i:s");
//現在時間
$uIn_date = strtotime("${b}");
//終了時間
$uOut_date = strtotime("${end}");
// 終了時間-現在時間
$jitsu = ($uOut_date - $uIn_date);

$h = (int)($jitsu /3600);
$m=(int)($jitsu % 3600 / 60);
$kei = sprintf("%02d:%02d", $h, $m);

if($kei){
$waiting = "残り". $kei."分待ち";
} else {
$waiting = '待機中';
}
} else {
$waiting = '待機中';
}

ご伝授いただけたらうれしいです。
reply: 4400 返信 編集 削除

[4400] Re. 時間計算

user: ゆうじ | created: 2011-04-04 23:55
こんばんわ。

コピペしてそのまま実行出来る
必要最少限のコードにしてあると試してもらいやすいですよ。

・テストコード
細かなとこは自分なりに解釈して、
デバッグの echo を書き加えてます。
<?php
$start = '18:00';
$end = '19:30';
$work_time = 90;


$b = date("H:i:s");

//現在時間
$uIn_date = strtotime($b);
echo '$uIn_date: ', $uIn_date, '<br>';

//終了時間
$uOut_date = strtotime($end);
echo '$uOut_date: ', $uOut_date, '<br>';

// 終了時間 - 現在時間
$jitsu = ($uOut_date - $uIn_date);
echo '$jitsu: ', $jitsu, '<br>';

$h = (int)($jitsu /3600); //時間
echo '$h: ', $h, '<br>';

$m=(int)($jitsu % 3600 / 60); //分
echo '$m: ', $m, '<br>';

$kei = sprintf("%02d:%02d", $h, $m);
echo '$kei: ', $kei, '<br>';

if($kei){
$waiting = "残り". $kei."分待ち";
} else {
$waiting = '待機中';
}
echo '$waiting:', $waiting;
?>

・結果
$uIn_date: 1301928081
$uOut_date: 1301913000
$jitsu: -15081
$h: -4
$m: -11
$kei: -4:-11
$waiting:残り-4:-11分待ち

「時間差を求める」という事だけに絞れば
大きい方から、小さい方を引くと、時間差になるので

現在時間 - 終了時間

が適切かと思います。

他にいろいろツッコミどころがあって
どうなれば正解なのかわりませんでした。
ヒントになるかな。

<追記>
$start = '18:00';
$end = '19:30';
$work_time = 90;

後々計算が想定される $start や $end のDB側フォールドは
タイムスタンプ型 か int型のほうが楽じゃないかな。
私ならそうします。

<追記>
おっと、タイムスタンプ型 は日付時刻型の間違い。
Parent: 4399  reply: 4401 返信 編集 削除

[4401] ありがとうございます

user: Me | created: 2011-04-06 19:28
突っ込みどころ満載のロジックに返信ありがとうございますww
ゆうじさんのロジックを参考に頑張ってみます。
また分からないときは質問させてください。
Parent: 4400  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 923 件中 10 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑