Heim  >  Fragen und Antworten  >  Hauptteil

Bei der Berechnung des Zeitunterschieds in Sekunden in PHP durch die Konvertierung zweier Datumsangaben in Unix-Zeitstempel treten unvorhergesehene Ergebnisse auf.

<p>Gemäß dem Titel versuche ich, den Unterschied in Sekunden zu ermitteln und diese Sekunden dann in Tage und Stunden umzuwandeln. </p> <p>Nachdem ich ähnliche Fragen gelesen und befolgt hatte, habe ich eine Funktion erstellt, die die gewünschte Stunde, den Tag, die Woche, den Monat oder das Jahr zum heutigen Datum/Uhrzeit hinzufügt, und ich erhalte in diesem Teil die richtigen Ergebnisse. </p> <p> Allerdings habe ich dann versucht, die beiden Daten (Startdatum und Umzugsdatum) in Unix-Zeitstempel umzuwandeln, indem ich beide Zeitstempel subtrahierte, um die Differenz zwischen den beiden Daten in Sekunden zu ermitteln, und dann erhalte ich durch die Konvertierung nicht die erwarteten Ergebnisse für Tage oder Minuten (/86400 und /3600). </p> <p>Das ist der Code.</p> <pre class="brush:php;toolbar:false;"><?php $dateTimeNow = date(); Funktion dateTimeShift($dateTimeIn, $lengthNum, $lengthWord) { $shifted = date("Y-m-d H:i:s", strtotime($dateTimeIn." + $lengthNum $lengthWord")); $difference = strtotime($shifted)-strtotime($dateTimeIn); return $shifted . " } echo dateTimeShift($dateTimeNow, "1", "day"); ?></pre> <p>Das aktuelle Ergebnis ist...</p> <blockquote> <p>2023-01-04 09:37:51 > 19361 Tage oder 464673 Stunden</p> </blockquote> <p>Ich hatte erwartet, dass es so sein würde</p> <blockquote> <p>2023-01-04 09:37:51 > 1 Tag oder 24 Stunden</p> </blockquote></p>
P粉237029457P粉237029457435 Tage vor589

Antworte allen(1)Ich werde antworten

  • P粉769413355

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

    问题是您使用的是不带参数的 date() 函数,请尝试使用这个:

    $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");

    输出:

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

    Antwort
    0
  • StornierenAntwort