我正在嘗試顯示發佈評論的時間已過去多長時間。我很困惑,現在我嘗試了很多方法,但似乎沒有工作。在兩個時間戳中找到差異
我的代碼只是給年前作爲輸出。
這裏是我的代碼:
$date = new DateTime();
$newtime = $date->format('U');
$oldtime = $row['time'];
$diffrence = $newtime - $oldtime;
$date = new DateTime("@$diffrence");
$sect = round($date->format('s'));
$mint = round($date->format('i'));
$hout = round($date->format('H'));
$dayt = round($date->format('d'));
$mont = round($date->format('m'));
$yeat = round($date->format('Y'));
if ($yeat > 1970){
$disptime = "years ago";
} else if ($yeat < 1970) {
$disptime = "$mont months ago";
} else if ($mont < 0) {
$disptime = "$dayt days ago";
} else if ($dayt < 0) {
$disptime = "$hout hours $mint min ago";
} else if ($hout < 0) {
$disptime = "$mint min $sect sec ago";
} else {
$disptime = "$sect sec ago";
}
編輯獲取附近的解決方案改變它yeat 0年至1970年
解決,但其他的方式找到的教程,使我自己的代碼在這裏解決後
$start_date = new DateTime($row['timestamp']);
$since_start = $start_date->diff(new DateTime($date->format('Y-m-d H:i:s')));
$yeat = $since_start->y;
$mont = $since_start->m;
$dayt = $since_start->d;
$hout = $since_start->h;
$mint = $since_start->i;
$sect = $since_start->s;
if ($mint == 0 && $hout == 0 && $dayt == 0 && $mont == 0 && $yeat == 0){
$disptime = "$sect sec ago";
} else if ($hout == 0 && $dayt == 0 && $mont == 0 && $yeat == 0) {
$disptime = "$mint min ago";
} else if ($dayt == 0 && $mont == 0 && $yeat == 0) {
$disptime = "$hout hours ago";
} else if ($mont == 0 && $yeat == 0) {
$disptime = "$dayt days ago";
} else if ($yeat == 0) {
$disptime = "$mont months ago";
} else {
$disptime = "$yeat years ago";
}
您應該使用['日期時間:: diff'(http://php.net/manual/datetime.diff.php),然後訪問DateInterval的成員。 –
提示:UNIX時間戳是*絕對時間*。減去兩個相近的UNIX時間戳會給你一個1970年1月1日之前的日期。你的'$ yeat'將始終有一個1970左右的值。 – deceze
是的,這就是發生了什麼。 @deceze – deerox