2014-06-07 27 views
0

這是轉換存儲的datetime在我的mysql,但每次它不斷給12-31-1969, 7:00 PM我一直找到幾個答案解釋爲什麼發生,但沒有一種方法來解決它日期和時間是錯誤的12-31-1969,7:00 PM

,因爲我想保持相同的佈局,但解決它,以顯示正確的時間和日期

如何這個代碼運行與出我將如何修改這個搞亂它是TIME_AGO這首回聲通話它運行在它上面的2條線,然後它沿着timeAgo函數傳播,到達最後一個回聲,它在頂部調用函數

function converttotime_date($date) { 
    $date = strtotime($date); 
    return date("m-d-Y, g:i A", $date); 
} 

$curenttime= $row['post_date']; 
$time_ago =strtotime($curenttime); 
echo "".timeAgo($time_ago)." 


function timeAgo($time_ago){ 
$cur_time = time(); 
$time_elapsed = $cur_time - $time_ago; 
$seconds = $time_elapsed ; 
$minutes = round($time_elapsed/60); 
$hours  = round($time_elapsed/3600); 
$days  = round($time_elapsed/86400); 
// Seconds 
if($seconds < 60){ 
    echo "$seconds seconds ago"; 
} 
//Minutes 
else if($minutes < 60){ 
    if($minutes==1){ 
     echo "1 minute ago"; 
    } 
    else{ 
     echo "$minutes minutes ago"; 
    } 
} 
//Hours 
else if($hours <= 12){ 
    if($hours==1){ 
     echo "1 hour ago"; 
    }else{ 
     echo "$hours hours ago"; 
    } 
} 
//Hours 
else if($hours <= 24){ 
     echo "Today, ".converttotime($time_ago)." "; 
} 

//Hours 
else if($hours <= 48){ 
     echo "Yesterday, ".converttotime($time_ago)." "; 
} 
//Days 
else if($days > 2){ 
     echo " ".converttotime_date($time_ago)." "; 
} 

} 
+0

GIGO ...如果你輸入「我是一個快樂的人」,你會得到一個糟糕的日期,並且默認爲你看到的日期/時間,所以檢查'strtotime'的結果並相應地處理。法律:絕不相信終端用戶輸入。編輯:功能說明是在http://php.net/strtotime –

+2

你是說,MySQL存儲不正確?如果是的話,你在mysql中使用的數據類型是什麼? 'datetime'不會接受這個,這必須是'varchar'或者將你的字符串改爲可接受的格式。 – Fr0zenFyr

+0

在數據庫中的日期是正確的,它只是給錯誤的日期和時間特別是年 – kyle1046

回答

1

的問題是在該行timeAgo功能

//Days 
else if($days > 2){ 
     echo " ".converttotime_date($time_ago)." "; # this wrong 
} 

$time_ago已經是一個Unix時間戳所以並不需要轉換。 因此,而不是將其更改爲

//Days 
else if($days > 2){ 
     echo date("m-d-Y, g:i A", $time_ago); 
} 

converttotime_date()不是不再需要。也許把它改成formatDateDisplay函數?