首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php mysql timeAgo函数问题

php mysql timeAgo函数问题
EN

Stack Overflow用户
提问于 2018-03-14 13:26:26
回答 1查看 28关注 0票数 0

您好,得到问题不知道为什么我的时间以前的功能将不会工作,保持显示49年?当它在2018年3月14日下午1:06创建时,不知道哪里出了问题,仍然不会显示正确的时间,一旦我按下提交,它应该是1秒或6秒,但它会显示49年。

enter image description here

这是我的ticket.php

代码语言:javascript
复制
public static function getTicket(){

   $sql = "SELECT * FROM `tickets` ";

   $result = $mysqli->query($sql);
   echo '<table class="table table-hover table-striped table-responsive"><th>User</th><th>Message</th><th>Created</th><th>Last update</th>';
    if ($result->num_rows > 0) {
      // output data of each row
      while($row = $result->fetch_assoc()) {
        echo '<tr class="table_row">
                <td>' . $row['Message'] . '</td>
                <td>' . date("F j, Y, g:i a", strtotime($row['date'])) . '</td>
                 <td>' . timeAgo($row['editdate']) . '</td>
                 <td><form method="POST">
                  <input name="ticketId" value="' . $row['ticketid'] . '" type="text" hidden />
                  <button type="submit"   class="'.$class .'">'.$row['status'] .'</button></form>
                  </td>
                </tr>';
}

这是我的timeAgo function.php

代码语言:javascript
复制
<?php
function timeAgo($time_ago)
{

    $cur_time   = time();
    $time_elapsed   = $cur_time - $time_ago;
    $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){
        return "just now";
    }
    //Minutes
    else if($minutes <=60){
        if($minutes==1){
            return "one minute ago";
        }
        else{
            return "$minutes minutes ago";
        }
    }
    //Hours
    else if($hours <=24){
        if($hours==1){
            return "an hour ago";
        }else{
            return "$hours hrs ago";
        }
    }
    //Days
    else if($days <= 7){
        if($days==1){
            return "yesterday";
        }else{
            return "$days days ago";
        }
    }
    //Weeks
    else if($weeks <= 4.3){
        if($weeks==1){
            return "a week ago";
        }else{
            return "$weeks weeks ago";
        }
    }
    //Months
    else if($months <=12){
        if($months==1){
            return "a month ago";
        }else{
            return "$months months ago";
        }
    }
    //Years
    else{
        if($years==1){
            return "one year ago";
        }else{
            return "$years years ago";
        }
    }
}



?>
EN

回答 1

Stack Overflow用户

发布于 2018-03-14 14:02:59

请使用strtotime()函数以秒为单位传递$row'editdate'值转换。

代码语言:javascript
复制
timeAgo(strtotime($row['editdate']));

在这之后,你可以得到当前时间和seconds.Without转换中给定时间的差值(以秒为单位),php在你的$time_ago变量中考虑默认的时间戳值为 timestamp 1 1970 00:00:00GMT,你就得到了49年的差值。

希望你能理解。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49270264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档