web-dev-qa-db-fra.com

Obtenir la différence de temps entre deux fois en PHP

Duplicata possible:
Comment obtenir le décalage horaire en minutes en PHP

Je travaille sur une table de présence pour calculer les employés en retard et très en retard. Je stocke l'heure de connexion dans le tableau (Type: heure). Je peux obtenir l'heure de la base de données et je voudrais montrer le décalage horaire dans la colonne séparée.

c'est-à-dire, si l'employé s'est connecté ou avant 09:00:59, alors son bon moment et la différence de temps doivent être affichés comme nuls. S'il se connecte après l'heure, c'est-à-dire 09:01:00 ou plus tard, le décalage horaire doit être 00:00:01. Comme sage, je dois calculer les différences de temps.

Une fois est constante, c'est-à-dire 09:00:59 et un autre que je reçois de la table de base de données. Besoin de faire la différence entre les deux. Je travaille en PHP. J'espère que ma question est claire.

Merci d'avance.

25

Vous pouvez utiliser strtotime () pour le calcul du temps. Voici un exemple:

$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!';

Démo

Vérifiez la question déjà posée - comment obtenir le décalage horaire en minutes :

Soustrayez le plus ancien du plus futur et divisez par 60.

Les temps sont effectués au format Unix, ils ne sont donc qu'un grand nombre indiquant le nombre de secondes à partir du 1er janvier 1970 00:00:00 GMT

24
Sithu

Vous pouvez également utiliser la classe DateTime :

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

Résultat:

1 second(s)
13
DroneZzZko