【问题标题】:Can't implement this timeAgo functionality in a PHP Loop无法在 PHP 循环中实现 this timeAgo 功能
【发布时间】:2014-09-18 16:57:37
【问题描述】:

我正在尝试让 PHP 向我展示一些很久以前的功能。我正在遍历 Mysql 表中的结果,其中有一个名为“aplicationdate”的列名,数据库中的格式为“Ymd”。但它只是向我显示了一些负数,如 -16328 .. 这是我的 timeago filev任何帮助将不胜感激:

<? php

function timeAgo($time_ago) {
    $cur_time = date('Y-m-d');
    $time_elapsed = $cur_time - $time_ago;

    $days = round($time_elapsed / 86400);
    $weeks = round($time_elapsed / 604800);
    $months = round($time_elapsed / 2600640);
    $years = round($time_elapsed / 31207680);

    //Days
    if ($days <= 7) {
        if ($days == 1) {
            echo "yesterday";
        } else {
            echo "$days days ago";
        }
    }
    //Weeks
    else if ($weeks <= 4.3) {
        if ($weeks == 1) {
            echo "a week ago";
        } else {
            echo "$weeks weeks ago";
        }
    }
    //Months
    else if ($months <= 12) {
        if ($months == 1) {
            echo "a month ago";
        } else {
            echo "$months months ago";
        }
    }
    //Years
    else {
        if ($years == 1) {
            echo "one year ago";
        } else {
            echo "$years years ago";
        }
    }
}

?>

下面是它在另一个名为 profile.php 的文件中的实现方式,timeago 文件包含在这个文件中

 <? php

 $mysqli = new mysqli("localhost", "root", "", "cx");

 /* check connection */
 if ($mysqli - > connect_errno) {
     printf("Connect failed: %s\n", $mysqli - > connect_error);
     exit();
 }


 $idced_history = $_GET['idced'];

 $query = "SELECT * FROM applications WHERE idced='$idced_history'";

 if ($result = $mysqli - > query($query)) {

     while ($row = $result - > fetch_assoc()) {

         $curenttime = $row["applicationdate"];
         $time_ago = strtotime($curenttime);

         echo "<br><b>Applied On:</b> ".$row["applicationdate"]."  ".timeAgo($time_ago)."  <br>";


     }

     $result - > free();
 }

 $mysqli - > close();
?>

【问题讨论】:

  • 请删除一堆不相关的代码

标签: php mysql time date-math


【解决方案1】:

$cur_time 是一个字符串,而不是一个数字。看起来您需要在使用它之前将其转换为 Unix 时间戳。所以用time()代替date()

 $cur_time  = time();

(这是假设 $time_ago 也是一个 Unix 时间戳)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2017-05-03
    相关资源
    最近更新 更多