2013-02-05 60 views
0

我想知道在顯示時間戳之後使用的邏輯,例如x分鐘前或x小時前以及幾小時後顯示確切時間,如發佈於下午7:57就像他們在郵件網站上做的一樣,還有twitter等。以秒和分鐘顯示時間值的邏輯

我怎麼知道什麼時候顯示秒/分鐘/小時範圍以及何時以am/pm格式顯示實際時間?請建議用於實現此目的的業務邏輯。

+1

你已經知道這樣做的業務邏輯。你說它應該先顯示出來,幾小時後再顯示出來。 –

回答

1

從PHP手冊:

<?php 
function nicetime($date) 
{ 
    if(empty($date)) { 
     return "No date provided"; 
    } 

    $periods   = array("second", "minute", "hour", "day", "week", "month", "year", "decade"); 
    $lengths   = array("60","60","24","7","4.35","12","10"); 

    $now    = time(); 
    $unix_date   = strtotime($date); 

     // check validity of date 
    if(empty($unix_date)) {  
     return "Bad date"; 
    } 

    // is it future date or past date 
    if($now > $unix_date) {  
     $difference  = $now - $unix_date; 
     $tense   = "ago"; 

    } else { 
     $difference  = $unix_date - $now; 
     $tense   = "from now"; 
    } 

    for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) { 
     $difference /= $lengths[$j]; 
    } 

    $difference = round($difference); 

    if($difference != 1) { 
     $periods[$j].= "s"; 
    } 

    return "$difference $periods[$j] {$tense}"; 
} 

$date = "2009-03-04 17:45"; 
$result = nicetime($date); // 2 days ago 

?> 

http://www.php.net/manual/de/function.time.php#89415

+0

我可能知道,爲什麼這個答案被降低了?這不是一個合適的解決方案嗎? – coder101

+0

它不僅會在20秒前,2分鐘前顯示,而且還會顯示2小時,3周......你顯然不想看到什麼? – Chris

+0

我同意它會顯示我所問的,但我想知道爲什麼downvote這個答案,當它是正確的?有人一定有其他想法。 – coder101

0

使用PHP以常規方式打印時間戳,並使用jago的timeago插件來做花哨的東西。

+0

謝謝leftclickben \ – coder101

0

您可以使用類似這樣

$time = $now - $time; 

if ($time < 60) { 
    $name = "second"; 
} 
elseif ($time < 3600) 
{ 
    $time /= 60; 
    $name = "minute"; 
} 
elseif ($time < 86400) 
{ 
    $time /= 3600; //86400; 
    $name = "hour"; 
} 
elseif ($time < 604800) 
{ 
    $time /= 86400; //604800; 
    $name = "day"; 
} 
elseif ($time < 31536000) 
{ 
    $time /= 604800; //31536000; 
    $name = "week"; 
} 
else 
{ 
    $time /= 31536000; 
    $name = "year"; 
} 
+0

謝謝philipp ... – coder101

相關問題