2010-07-16 217 views
2

我需要以某種方式採取unix時間戳並輸出它像下面Unix時間戳到秒,分鐘,小時

這可以用MySQL來完成嗎?或PHP

Mike        7s ago 
Jim        44s ago 
John        59s ago 
Amanda       1m ago 
Ryan        1m ago 
Sarah       1m ago 
Tom        2m ago 
Pamela       2m ago 
Ruben       3m ago 
Pamela       5h ago 

正如您可以猜到我只想打印分鐘,而不是分和秒(1分3秒前)

我應該怎麼考慮?

回答

0

你可以試試我的Timeago建議here鏈接。

它可以給輸出是這樣的:

你打開這個網頁不到一 分鐘前。 (這將更新每個 分鐘,等待它。)

本頁面最後 前修改11天。

瑞恩出生31年前

6

PHP 5.3和更高版本有DateTime對象,您可以使用從數據庫返回的數據構造對象。這些DateTime對象有一個diff方法來獲取作爲DateInterval對象的兩個日期之間的差異,然後您可以format

編輯:更正subdiff

編輯2: 兩個卡口與做這種方式:

  1. DateTime的構造似乎沒有采取UNIX時間戳......除非有@前綴,像這樣:$startDate = new DateTime('@' . $timestamp);
  2. 如果不手動檢查最大單位,你就不會知道。要獲得單個字段,您仍然需要使用格式,但僅使用單個代碼...類似於$years = $dateDiff->format('y');
+0

+1如果你是新來的PHP日期處理,從一開始就使用'DateTime'。它比時間戳更好。 – 2010-07-16 18:49:35

+0

我犯了一個錯誤,並使用sub而不是diff。我現在修好了。 – Powerlord 2010-07-16 18:51:23

5

是的,可以完成。 See related post

$before // this is a UNIX timestamp from some time in the past, maybe loaded from mysql 
$now = time() 

$diff = $now - $before; 
if(1 > $diff){ 
    exit('Target Event Already Passed (or is passing this very instant)'); 
} else { 
    $w = $diff/86400/7; 
    $d = $diff/86400 % 7; 
    $h = $diff/3600 % 24; 
    $m = $diff/60 % 60; 
    $s = $diff % 60; 

    return "{$w} weeks, {$d} days, {$h} hours, {$m} minutes and {$s} secs away!" 
} 
0

我不手邊有一個MySQL服務器,但以下命令的組合應該讓你像你想要什麼。

DATEDIFF

DATEFORMAT

1
function sECONDS_TO_DHMS($seconds) 
{ 

    $days = floor($seconds/86400); 
    $hrs = floor($seconds/3600); 
    $mins = intval(($seconds/60) % 60); 
    $sec = intval($seconds % 60); 

    if($days>0){ 
     //echo $days;exit; 
     $hrs = str_pad($hrs,2,'0',STR_PAD_LEFT); 
     $hours = $hrs-($days*24); 
     $return_days = $days." Days "; 
     $hrs = str_pad($hours,2,'0',STR_PAD_LEFT); 
    }else{ 
     $return_days=""; 
     $hrs = str_pad($hrs,2,'0',STR_PAD_LEFT); 
    } 

    $mins = str_pad($mins,2,'0',STR_PAD_LEFT); 
    $sec = str_pad($sec,2,'0',STR_PAD_LEFT); 

    return $return_days.$hrs.":".$mins.":".$sec; 
} 

echo sECONDS_TO_DHMS(2); // Output 00:00:02 
echo sECONDS_TO_DHMS(96000); // Output 1 Days 02:40:00 
相關問題