2013-02-15 1 views
0

아무도 도와 드릴 수 있습니다. 나는 끔찍한 표준 날짜에서 mysql 타임 스탬프를 변환하고 "약 2 초 전 또는 약 1 시간 전에"사용자에게 친숙한 방식으로 넣는이 스크립트를 가지고 있습니다.콘텐츠가 게시되는 즉시 mysql에서 시간을 보여 주시겠습니까?

제 질문은 이쪽입니다. 사용자가 콘텐츠를 올리면 가장 최근의 콘텐츠가 "0 번 전"에 게시 된 시간을 알려주지 않고 그 이후 다른 게시물을 올릴 때까지 한 번에 시간을 보게됩니다. 그들은이 전에 게시했습니다.

그래서 내가 왜 알아낼 수 없기 때문에 이것이 궁금합니다. 사용자가 게시 한 즉시 바로 "지금 추가"라고 말하고 스크립트가 20 초 전에 추가되었다고 말하면서 계속 진행하기를 원합니다. 2 분 전 등

예 : (내용이) "전쯤에 0을 기록했다"

(내용 1)

다음 내용 일 것이다 매 업데이트 "를 약 5 시간 전에 게시" (내용 3) "전 약 8 분 게시" 다른 콘텐츠가 게시 될 때가 있습니다. (1) 당신이 relative time function을 지금, 다음 몇 초 후, 게시 약 5 초 전, 1 분 전, 1 시간 전 7 일 전 게시 시도 할 수 있습니다 말해야 등

<div class="board-wall-feeds">   
<div class="social_header"> 
<?php echo "$profile[2]" ?>'s News & Updates: 
</div>   
<?php 

$timeline_set = get_timeline(); 
while ($news = mysql_fetch_array($timeline_set)) { 
echo " 

<div class=\"news_feeds_board_text\">{$news['content']} 
<div class=\"social_footer\">about ".$t.$labels[$i]." ago<a href=\"../../../delete_news_post.php?to=".$news['id']."</div><div class=\"social_clip\"></div></div></a>"; 

    $datetime1 = new DateTime(); 
     $datetime2 = new DateTime ($news['date_added']); 
     $interval = $datetime1->diff($datetime2); 
     $mdhms = explode('-',$interval->format('%m-%d-%H-%i-%s')); 

$labels = Array(' months', ' days', ' hours', ' minutes', ' seconds'); 
$i = 0; 
foreach($mdhms as $t){ 
    if($t > 0) break; 
    $i+=1; 
} 
     } ?> 
     </div> 

답변

3

그래서 내용 이 여기가 strtotime function에 의해 변환이 $tstime을 통과해야이 기능에

function relativetime($ts) 
{ 
    $diff = time() - $ts; 
    if($diff == 0) 
     return 'now'; 
    elseif($diff > 0) 
    { 
     $day_diff = floor($diff/86400); 
     if($day_diff == 0) 
     { 
      if($diff < 60) return 'just now'; 
      if($diff < 120) return '1 minute ago'; 
      if($diff < 3600) return floor($diff/60) . ' minutes ago'; 
      if($diff < 7200) return '1 hour ago'; 
      if($diff < 86400) return floor($diff/3600) . ' hours ago'; 
     } 
     if($day_diff == 1) return 'Yesterday'; 
     if($day_diff < 7) return $day_diff . ' days ago'; 
     if($day_diff < 31) return ceil($day_diff/7) . ' weeks ago'; 
     if($day_diff < 60) return 'last month'; 
     return date('F Y', $ts); 
    } 
    else 
    { 
     $diff = abs($diff); 
     $day_diff = floor($diff/86400); 
     if($day_diff == 0) 
     { 
      if($diff < 120) return 'in a minute'; 
      if($diff < 3600) return 'in ' . floor($diff/60) . ' minutes'; 
      if($diff < 7200) return 'in an hour'; 
      if($diff < 86400) return 'in ' . floor($diff/3600) . ' hours'; 
     } 
     if($day_diff == 1) return 'Tomorrow'; 
     if($day_diff < 4) return date('l', $ts); 
     if($day_diff < 7 + (7 - date('w'))) return 'next week'; 
     if(ceil($day_diff/7) < 4) return 'in ' . ceil($day_diff/7) . ' weeks'; 
     if(date('n', $ts) == date('n') + 1) return 'next month'; 
     return date('F Y', $ts); 
    } 
} 

입니다.

PHP: producing relative date/time from timestamps

+0

의 중복 가능성 일 수 있습니다 내가 코드를 시도하지만이 같은 상대 시간을 –

+2

변화는 used' 결코 '또 하나 함수 이름'relativeTime'을 재 선언 할 수없는 치명적인 오류가 온다 오류는 '두 함수'가 '같은 이름'일 때 발생합니다. 데모의 경우 http://writecodeonline.com/php에서 함수를 복사하고 함수가'echo relativeTime (strtotime ("- 1 hour")); –

관련 문제