2014-10-06 70 views
0

我知道這個問題已經被問了幾次,我發現很多教程,博客文章有關轉換時間戳在PHP前的時間..轉換時間戳到前在php?

我已經試過無數的代碼並沒有什麼似乎爲我工作...

我要麼得到沒有任何錯誤(我有錯誤rerposting我的PHP頁面上),或者我在頁面上得到一些陌生號碼一個空白頁..

所以我認爲這裏有人可以在此灑下的光我..

基本上我是這樣保存日期:

$date = date('Y-m-d H:i:s'); 

我只是將它保存在MySQL數據庫......

和我贊同它像這樣:所以現在我需要知道

echo $date; 

是我怎麼可以轉換回聲$日期;到1分鐘前,10分鐘前,1小時前等等,每當頁面關閉並重新打開?

我確實嘗試了很多功能,我發現谷歌和中午似乎做任何事情!

可能有人請告知這個問題?

感謝

編輯:

我用這個代碼在回答說,但我仍然得到$日期回聲版完全相同的方式作爲其存儲在爲這種格式的數據庫時間:2014年-10-06二十二時54分54秒

$date = date('Y-m-d H:i:s'); 

$time1 = new DateTime($date); 
$now = new DateTime(); 
$interval = $time1->diff($now); 


if ($interval->y) $date = $interval->y . ' years'; 
elseif ($interval->m) $date = $interval->m . ' months'; 
elseif ($interval->d) $date = $interval->d . ' days'; 
elseif ($interval->h) $date = $interval->h . ' hours'; 
elseif ($interval->i) $date = $interval->i . ' minutes'; 


echo $date; 
+1

http://php.net/manual/en/class.dateinterval.php和http:// PHP。 net/manual/en/class.datetime.php +函數'diff'它 – Cheery 2014-10-06 21:57:33

+0

@Cheery,不知道我在看哪個頁面隊友!有點深入的解釋會在這裏適合我認爲... – shell 2014-10-06 22:02:47

+0

仔細看..例如這裏'$ d1 = new \ DateTime(「2013-07-31 10:29:00」); $ d2 = new \ DateTime(「2013-08-02 5:32:12」); echo $ d1-> diff($ d2) - > d;' – Cheery 2014-10-06 22:03:52

回答

0

您應該使用DateTime類來獲得2倍,即之間的差異;

$time1 = new DateTime('2014-10-06 09:00:59'); 
$now = new DateTime(); 
$interval = $time1->diff($now,true); 

,然後使用該差值(它是一個對象DateInterval$interval),以找到這樣的最小時間差;

if ($interval->y) echo $interval->y . ' years'; 
elseif ($interval->m) echo $interval->m . ' months'; 
elseif ($interval->d) echo $interval->d . ' days'; 
elseif ($interval->h) echo $interval->h . ' hours'; 
elseif ($interval->i) echo $interval->i . ' minutes'; 
else echo "less than 1 minute"; 

應該回聲(寫作時)13 hours

希望這會有所幫助。

+0

與您的第一個代碼我得到致命錯誤:調用未定義的方法DateTime :: diff()錯誤在我的頁面上。 – shell 2014-10-06 22:15:02

+0

麪包屑,你使用的是什麼版本的PHP? – worldofjr 2014-10-06 22:17:28

+0

大概5.2或5.3 ..它的一箇舊的測試服務器..沒什麼特別的.. – shell 2014-10-06 22:18:49

0

檢查這項功能INTVAL() - http://php.net/manual/en/function.intval.php 下面的代碼應該幫助你

$seconds_ago = (time() - strtotime('2014-01-06 15:25:08')); 

if ($seconds_ago >= 31536000) { 
    echo "Seen " . intval($seconds_ago/31536000) . " years ago"; 
} elseif ($seconds_ago >= 2419200) { 
    echo "Seen " . intval($seconds_ago/2419200) . " months ago"; 
} elseif ($seconds_ago >= 86400) { 
    echo "Seen " . intval($seconds_ago/86400) . " days ago"; 
} elseif ($seconds_ago >= 3600) { 
    echo "Seen " . intval($seconds_ago/3600) . " hours ago"; 
} elseif ($seconds_ago >= 60) { 
    echo "Seen " . intval($seconds_ago/60) . " minutes ago"; 
} else { 
    echo "Seen less than a minute ago"; 
}