2017-05-09 13 views
-1

我想$dayleft裏面的else出現在"Y/n/j"格式,但是當我運行它時,它只返回年份,發生了什麼?日期正在返回一個錯誤的值

代碼:

$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

你不能比較字符串'> '。使它們成爲整數,或使用'datediff'函數。 – chris85

+0

'date()'產生一個字符串。你在數學比較和操作中使用字符串。結果會有些隨意。 – deceze

+0

@ chris85我做到了:'if(date_diff(date('Y/n/j'),$ date)> = 60)'並且產生這個錯誤:'Warning:date_diff()期望參數1是DateTimeInterface,字符串在/home/u478317930/public_html/externalhack.php在線92 ' – Francisco

回答

0

您必須格式化您的計算的最終結果。

$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:

下面是PHP小提琴測試的例子:

<?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"; 
?> 

而這裏的輸出:

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

現在它正在返回1970/1/1,我該如何解決這個問題? – Francisco

+0

@Francisco:你有沒有嘗試更新的代碼? –