2012-09-08 1 views
0

이 가능한 중복 다양한 출력 :
PHP: producing relative date/time from timestampsPHP 날짜, strtotime으로 -

는 PHP 코드의 예를 참조하십시오 출력으로

<?php 

$now = date("Y-m-d H:i:s"); 
$comment_added = date("2012-05-25 22:10:00"); 

?> 

을, 나는 싶습니다 다음과 같이하십시오 (덧글이 추가 된 시점에 따라 다름) :

Comment has been added 21 minutes ago. 
Comment has been added 15 hours ago. 
Comment has been added 2 days ago. 
Comment has been added 3 months ago. 
Comment has been added 4 years ago. 

자동으로 선택되는 함수를 얻고 싶습니다. 어떤 예도 인정 될 것이다.

+0

명백한 복제본이므로 신고하지 않아도됩니다. – Gajus

+2

그렇다면 URL을 붙여 넣을 수 있습니까? 왜 항상 사람들이 올바른 URL을 붙여 넣지 않고 "중복"이라고 말합니까? 전체 인터넷은 곧 하나의 큰 중복 될 것입니다 :] – Jakub

+0

[상대 시간 계산] (http://stackoverflow.com/questions/11/calculating-relative-time)을 참조하십시오. C#이지만 PHP로 변환하는 데 문제가 없어야합니다. 매우 간단합니다. – Alexei

답변

1

이 작동합니다.

<?php 

$now = date("Y-m-d H:i:s"); 
$comment_added = date("2012-05-25 22:10:00"); 

$diff = strtotime($now) - strtotime($comment_added); 
if ($diff > (365*24*3600)) { 
    $type = 'year'; 
    $value = floor($diff/(365*24*3600)); 
} else if ($diff > (30*24*3600)) { 
    $type = 'month'; 
    $value = floor($diff/(30*24*3600)); 
} else if ($diff > (24*3600)) { 
    $type = 'day'; 
    $value = floor($diff/(24*3600)); 
} else if ($diff > 3600) { 
    $type = 'hour'; 
    $value = floor($diff/3600); 
} else if ($diff > 60) { 
    $type = 'min'; 
    $value = floor($diff/60); 
} else { 
    $type = 'sec'; 
    $value = $diff; 
} 

$plurial = ''; 
if ($value > 1) 
{ 
    $plurial .= 's'; 
} 
echo "Comment added {$value} {$type}{$plurial} ago."; 

?> 
+0

많은 감사, 그것은 작동합니다! – Jakub