hi ich versuche die tage zwischen 2 terminen zu bekommen. Das ist meine Codierung:
<?php
$Cur_date = date("Y-m-d");
$Warranty = intval($row_Recordset1["Hardware_warranty"]);
$timestamp = strtotime($row_Recordset1["Pur_date"]);
$newtimestamp = strtotime("+".$Warranty." years", $timestamp);
$newtimestamp = date("Y/m/d", $newtimestamp) ;
if($Cur_date< $newtimestamp)
{
$interval = $Cur_date->diff($newtimestamp);
echo "Valid"."nnn".$interval->y . " years, " . $interval->m." months, ".$interval->d." days "." left";
}
else if ($Cur_date > $newtimestamp)
{
echo "Expired" ;
}
?>
aber ein Fehler kam heraus:
Schwerwiegender Fehler: Rufen Sie eine Mitgliedsfunktion diff () für den String in C: xampphtdocsWarrantyWarrantyStatus.php in Zeile 155 auf
Bitte helfen Sie mir, danke
kein Duplikat von Wie berechnet man die Differenz zwischen zwei Terminen mit PHP?
Ich habe hier ein anderes Problem. Muss ich vorher etwas deklarieren?
Antworten:
2 für die Antwort № 1Die Variable $ Cur_date ist keine Instanz der DateTime-Klasse, sondern nur eine Standardzeichenfolge. Sie enthält also keine diff () -Methode.
Ändern Sie die Deklaration in:
$Cur_date = new DateTime("Y-m-d");
Auch um die diff () -Methode weiter zu verwenden$ newtimestamp, Sie müssen $ newtimestamp auch in ein DateTime-Objekt konvertieren. Um ein anderes Datum und eine andere Uhrzeit als "now" zu verwenden, sollten Sie die statische Methode DateTime :: createFromFormat () verwenden.
In Ihrem Fall würde es ungefähr so aussehen:
$Warranty = intval($row_Recordset1["Hardware_warranty"]);
$timestamp = strtotime($row_Recordset1["Pur_date"]);
$newtimestamp = strtotime("+".$Warranty." years", $timestamp);
$newtimestamp = DateTime::createFromFormat("Y/m/d", $newtimestamp);
Zu diesem Zeitpunkt sollten Sie in der Lage sein, diezwei DateTime-Objekte, und verwenden Sie die diff () -Methode wie beabsichtigt. Da Sie die diff () -Methode verwenden, können Sie auch die "days" -Eigenschaft des resultierenden $ -Intervalls anstelle von "d" verwenden. Es liegt an dir.
Siehe auch:
http://php.net/manual/en/datetime.diff.php
http://php.net/manual/en/datetime.createfromformat.php