2017-05-09 2 views
-1

Ich möchte $dayleft innerhalb der sonst in "Y/n/j" Format erscheinen, aber wenn ich es ausführen, gibt es nur das Jahr, was passiert ist?Datum gibt einen falschen Wert

Code:

$select = mysqli_query($connect, $query_select); 
$row = mysqli_fetch_row($select); 
$idchange = $row['5']; 
$date = DateTime::createFromFormat("Y-n-j", $idchange); 
if (date('Y/n/j', strtotime("-60 days")) > $date){ 
echo "<br><a href='changeid.php'>Reset Machine_ID</a> - Status: <font color='green'>Available</font>"; 
} 
else{ 
$dayleft = date('Y/n/j', strtotime("+60 days")) - $date; 
echo "<br><a href='#'>Reset Machine_ID</a> - Status: <font color='red'>Unavailable</font> - Available Day: $dayleft"; 
} 
+0

Sie können nicht vergleichen Strings mit '> '. Machen Sie sie zu ganzen Zahlen oder verwenden Sie die 'datediff'-Funktion. – chris85

+0

'date()' erzeugt eine Zeichenkette. Sie verwenden Zeichenfolgen in mathematischen Vergleichen und Operationen. Die Ergebnisse werden etwas zufällig sein. – deceze

+0

@ chris85 Ich habe das getan: 'if (date_diff (Datum ('Y/n/j'), $ date)> = 60)' und produziert diesen Fehler: 'Warnung: date_diff() erwartet Parameter 1 DateTimeInterface, string in /home/u478317930/public_html/externalhack.php on line 92 ' – Francisco

Antwort

0

Sie haben das Endergebnis Ihrer Berechnung zu formatieren.

$dayleft = date('Y/n/j', strtotime("+60 days")) - $date; 
$dayleft = date('Y/n/j',$dayleft); 
echo "<br><a href='#'>Reset Machine_ID</a> - Status: <font color='red'>Unavailable</font> - Available Day: $dayleft"; 

UPDATE:

Hier ist ein Beispiel in PHP Fiddle getestet:

<?php 
$date = time(); 
echo "Today: ". date('Y/m/d h:n:s',$date)."<br />"; 

//$dayleft = date_add(date('Y/m/d h:i:s',strtotime("+60 days")), $date); 
$t1 = date('Y/m/d h:i:s',strtotime('+60 day', $date)); 
echo "Date Available: " . $t1."<br />"; 
$dayleft = date('Y/n/j',strtotime($t1)); 
echo $dayleft."<br />"; 
echo "<br><a href='#'>Reset Machine_ID</a> - Status: <font color='red'>Unavailable</font> - Available Day: $dayleft"; 
?> 

Und hier ist der Ausgang:

Today: 2017/05/08 09:5:48

Date Available: 2017/07/07 09:57:48 2017/7/7

Reset Machine_ID - Status: Unavailable - Available Day: 2017/7/7

+2

Jetzt ist es immer wieder 1970/1/1, wie kann ich das beheben? – Francisco

+0

@Francisco: Haben Sie den aktualisierten Code getestet? –

Verwandte Themen