32

重複の可能性:
PHPで時差を分単位で取得する方法

私は、遅刻した従業員と非常に遅刻した従業員を計算するために出席テーブルに取り組んでいます。ログイン時間をテーブルに保存しています(タイプ:時間)。データベースから時刻を取得できたので、別の欄に時差を表示したいと思います。

つまり、従業員がログオンするかそれ以前09:00:59の場合、その正しい時刻と時刻の差分はnullとして表示されます。彼が時間の後にログインした場合、つまり、09:01:00それ以降、時差はになります00:00:01。同様に、時間の差を計算する必要があります。

1つは一定です。つまり、09:00:59もう1つはデータベーステーブルから取得しています。両方の差分を取得する必要があります。私はPHPで働いています。私の質問が明確であることを願っています。

前もって感謝します。

4

3 に答える 3

32

時間の計算にはstrtotime()を使用できます。次に例を示します。

$checkTime = strtotime('09:00:59');
echo 'Check Time : '.date('H:i:s', $checkTime);
echo '<hr>';

$loginTime = strtotime('09:01:00');
$diff = $checkTime - $loginTime;
echo 'Login Time : '.date('H:i:s', $loginTime).'<br>';
echo ($diff < 0)? 'Late!' : 'Right time!'; echo '<br>';
echo 'Time diff in sec: '.abs($diff);

echo '<hr>';

$loginTime = strtotime('09:00:59');
$diff = $checkTime - $loginTime;
echo 'Login Time : '.date('H:i:s', $loginTime).'<br>';
echo ($diff < 0)? 'Late!' : 'Right time!';

echo '<hr>';

$loginTime = strtotime('09:00:00');
$diff = $checkTime - $loginTime;
echo 'Login Time : '.date('H:i:s', $loginTime).'<br>';
echo ($diff < 0)? 'Late!' : 'Right time!';

デモ

すでに尋ねられた質問を確認してください-分単位で時差を取得する方法

過去の最も多いものを未来の最も多いものから引き、60で割ります。

時間はUNIX形式で行われるため、1970年1月1日00:00:00GMTからの秒数を示す大きな数値になります。

于 2012-12-18T07:17:35.200 に答える
20

DateTime クラスを使用することもできます。

$time1 = new DateTime('09:00:59');
$time2 = new DateTime('09:01:00');
$interval = $time1->diff($time2);
echo $interval->format('%s second(s)');

結果:

1 second(s)
于 2012-12-18T07:49:54.760 に答える
-1
<?php
$start = strtotime("12:00");
$end = // Run query to get datetime value from db
$elapsed = $end - $start;
echo date("H:i", $elapsed);
?>
于 2012-12-18T07:16:18.990 に答える