recherche

Maison  >  Questions et réponses  >  le corps du texte

Des résultats imprévus se produisent lors du calcul du décalage horaire en secondes en PHP en convertissant deux dates en horodatages Unix.

<p>Comme dans le titre, j'essaie de trouver la différence en secondes, puis de convertir ces secondes en jours et en heures. </p> <p>Après avoir lu et suivi des questions similaires, j'ai créé une fonction qui ajoute l'heure, le jour, la semaine, le mois ou l'année que je souhaite à la date/heure d'aujourd'hui, et j'obtiens les résultats corrects de cette partie. </p> <p> Cependant, j'ai ensuite essayé de convertir les deux dates (date de début et date de déplacement) en horodatages Unix, en soustrayant les deux horodatages pour trouver la différence entre les deux dates en secondes, puis en convertissant, je n'obtiens pas les résultats attendus. pendant des jours ou des minutes (/86400 et /3600). </p> <p>Voici le code..</p> <pre class="brush:php;toolbar:false;"><?php $dateTimeNow = date(); fonction dateTimeShift($dateTimeIn, $lengthNum, $lengthWord) { $shifted = date("Y-m-d H:i:s", strtotime($dateTimeIn." + $lengthNum $lengthWord")); $différence = strtotime($shifted)-strtotime($dateTimeIn); return $shifted <br> plancher($différence/86400) . } echo dateTimeShift($dateTimeNow, "1", "jour"); ?>≪/pré> <p>Le résultat actuel est...</p> <blockquote> <p>2023-01-04 09:37:51> 19361 jours ou 464673 heures</p> </blockquote> <p>Je m'attendais à ce que ce soit comme ça</p> <blockquote> <p>2023-01-04 09:37:51 > 1 jour ou 24 heures</p> </blockquote></p>
P粉237029457P粉237029457466 Il y a quelques jours621

répondre à tous(1)je répondrai

  • P粉769413355

    P粉7694133552023-09-04 00:23:10

    Le problème est que vous utilisez la fonction date() sans paramètres, essayez d'utiliser ceci :

    $dateTimeNow = date("Y-m-d H:i:s");
    
    function dateTimeShift($dateTimeIn, $lengthNum, $lengthWord) {
        $shifted = date("Y-m-d H:i:s", strtotime($dateTimeIn." + $lengthNum $lengthWord"));
        $difference = strtotime($shifted)-strtotime($dateTimeIn);
        return $shifted . " <br> " . floor($difference/86400) . " days or " . floor($difference/3600) . " hours";
    }
    
    echo dateTimeShift($dateTimeNow, "1", "day");

    Sortie :

    2023-01-04 09:57:31 <br> 1 days or 24 hours

    répondre
    0
  • Annulerrépondre