web-dev-qa-db-fra.com

calculer la différence entre 2 timestamps en php

J'utilise 2 horodatage dans mon tableau, à savoir Type de données starttime - horodatage et horodatage actuel . Type de données endtime-timestamp et valeur par défaut 0000-00-00 00:00:00

comment calculer la différence entre 2 timestamps en php starttime: 2016-11-30 03:55:06 endtimetime: 2016-11-30 11:55:06

13
user6582683

Toute méthode procédurale doit être évitée . Utilisez la méthode OOP pour la différence date/heure:

$datetime1 = new DateTime('2016-11-30 03:55:06');//start time
$datetime2 = new DateTime('2016-11-30 11:55:06');//end time
$interval = $datetime1->diff($datetime2);
echo $interval->format('%Y years %m months %d days %H hours %i minutes %s seconds');//00 years 0 months 0 days 08 hours 0 minutes 0 seconds

Vous pouvez configurer le format de différence selon vos besoins.

%Y - use for difference in year
%m - use for difference in months
%d - use for difference in days
%H - use for difference in hours (24 hour format)
%i - use for difference in minutes
%s - use for difference in seconds

Vous pouvez supprimer n'importe laquelle des valeurs ci-dessus selon vos besoins. Par exemple, si vous ne vous intéressez qu'à la différence d'heures et que vous savez que la différence ne peut pas dépasser 24 heures, utilisez uniquement %H.

Si vous voulez avoir la différence totale en secondes, vous pouvez utiliser:

echo $difference_in_seconds = strtotime('2016-11-30 11:55:06') - strtotime('2016-11-30 03:55:06');//28800

Cela dépend de vos besoins et du format final dans lequel vous voulez avoir un décalage horaire.

Pour vérifier les références: http://php.net/manual/en/datetime.diff.php

J'espère que ça aide

15
Learner

Vous pouvez convertir vos horodatages en timestamp Unix (temps en secondes) en utilisant php strtotime, puis prendre la différence. Vous avez maintenant la différence de temps en secondes et pouvez convertir en ce dont vous avez besoin ... heures, minutes, jours

http://php.net/manual/en/function.strtotime.php

ex:

$ts1 = strtotime($start);
$ts2 = strtotime($end);     
$seconds_diff = $ts2 - $ts1;                            
$time = ($seconds_diff/3600);
7
bio_sprite

La réponse la plus simple (pour moi bien sûr) est ici

function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' )
{
    $datetime1 = date_create($date_1);
    $datetime2 = date_create($date_2);

    $interval = date_diff($datetime1, $datetime2);

    return $interval->format($differenceFormat);

}

Dans ce cas, la fonction date_create () crée l'objet DateTime

0
AlexKh

essayez ce code, testé sur phpfiddle.org: -

function timestampdiff($qw,$saw)
{
    $datetime1 = new DateTime("@$qw");
    $datetime2 = new DateTime("@$saw");
    $interval = $datetime1->diff($datetime2);
    return $interval->format('%Hh %Im');
}
echo timestampdiff('1524794340', '1524803100');
0
Praveen Bhagat