2017-06-27 39 views
1

我面临的问题,显示最新评论当我评论和1小时后,我看到输出是“刚才”,但我想显示1小时去和显示最近一次 如何显示显示最近的日期和时间的评论在php

请帮我在这种情况下

这里所有的意见是我的代码:

$comments = mysqli_query($conn, "SELECT * FROM `store_review` WHERE store_id = '$id1' ORDER BY review_date DESC "); 

    $new_result1 = mysqli_num_rows($comments); 

$time = $row['review_date']." ".$row['review_time']; 

<div class="review-block-date"><?php echo $time; ?><br/><?php echo ago($time); ?></div> 

这里是我的功能:

<?php 
function ago($mytime) 
     {    
      $time_ago1 = strtotime($mytime); 
      $cur_time = time(); 
      $time_elapsed = $cur_time - $time_ago1; 
      $seconds = $time_elapsed ; 
      $minutes = round($time_elapsed/60); 
      $hours  = round($time_elapsed/3600); 
      $days  = round($time_elapsed/86400); 
      $weeks  = round($time_elapsed/604800); 
      $months  = round($time_elapsed/2600640); 
      $years  = round($time_elapsed/31207680); 
      // Seconds 
      if($seconds <= 60) 
      { 
       $post_time = "just now"; 
      } 
      //Minutes 
      else if($minutes <=60) 
      { 
       if($minutes==1) 
       { 
        $post_time = "1 minute ago"; 
       } 
       else 
       { 
        $post_time = "$minutes minutes ago"; 
       } 
      } 
      //Hours 
      else if($hours <=24) 
      { 
       if($hours==1) 
       { 
        $post_time = "1 hrs ago"; 
       } 
       else 
       { 
        $post_time = "$hours hrs ago"; 
       } 
      } 
      //Days 
      else if($days <= 7) 
      { 
       if($days==1) 
       { 
        $post_time = "yesterday"; 
       } 
       else 
       { 
        $post_time = "$days days ago"; 
       } 
      } 
      //Weeks 
      else if($weeks <= 4.3) 
      { 
       if($weeks==1) 
       { 
        $post_time = "1 week ago"; 
       } 
       else 
       { 
        $post_time = "$weeks weeks ago"; 
       } 
      } 
      //Months 
      else if($months <=12) 
      { 
       if($months==1) 
       { 
        $post_time = "1 month ago"; 
       }else{ 
        $post_time = "$months months ago"; 
       } 
      } 
      //Years 
      else 
      { 
       if($years==1) 
       { 
        $post_time = "1 year ago"; 
       } 
       else 
       { 
        $post_time = "$years years ago"; 
       } 
      } 
      return $post_time; 
     }?> 

回答

2

尝试此方法

<?php 
function time_elapsed_string($datetime, $full = false) { 
    $now = new DateTime; 
    $ago = new DateTime($datetime); 
    $diff = $now->diff($ago); 

    $diff->w = floor($diff->d/7); 
    $diff->d -= $diff->w * 7; 

    $string = array(
     'y' => 'year', 
     'm' => 'month', 
     'w' => 'week', 
     'd' => 'day', 
     'h' => 'hour', 
     'i' => 'minute', 
     's' => 'second', 
    ); 
    foreach ($string as $k => &$v) { 
     if ($diff->$k) { 
      $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : ''); 
     } else { 
      unset($string[$k]); 
     } 
    } 

    if (!$full) $string = array_slice($string, 0, 1); 
    return $string ? implode(', ', $string) . ' ago' : 'just now'; 
} 

echo time_elapsed_string('2017-06-01 00:22:35'); 

echo "for full"; 

echo time_elapsed_string('2017-06-01 00:22:35',true); 

PHP Fiddle

+0

@siddartha esunuri。感谢您的帮助:) –

+0

然后批准我的答案@HardChapla –