【问题标题】:want to compare a strtotime value to currenttime and output: something x min ago想要将 strtotime 值与 currenttime 和输出进行比较:something x min ago
【发布时间】:2010-06-29 04:07:52
【问题描述】:

我正在开发类似于 facebook 的新闻源。我将 mysql 表中发生某事的时间与当前时间和输出进行比较:某事发生在 x 分钟前。

首先我用这个代码连接到mysql:

        $conn = db_connect();
        $newsfeed = $conn->query("select info, username, time from newsfeed ORDER BY time DESC LIMIT 10");
        if (!$newsfeed) {
        //die(msg(0,"Could not execute query"));
        }

我是 mysql 新手,所以我不确定这是否正确。我希望数据库中的最后 10 个更新与下一个函数一起显示,其中最新更新高于其他函数:

        $newsfeed_info_array = $newsfeed->fetch_array(MYSQLI_NUM);
        $newsfeed_info = $newsfeed_info_array[0];   
        $newsfeed_username = $newsfeed_info_array[1];   
        $newsfeed_time= $newsfeed_info_array[2];
        $newsfeed_info_split = explode("-", $newsfeed_info);    //type and info

        date_default_timezone_set('Europe/Paris');
        $current_time = strtotime("now"); 

        if ($newsfeed_info_split[0] == "reg")
            {
                            //The next line is the problem
            $time_diff = date_diff($current_time, $newsfeed_time); 
            echo "<p>User $newsfeed_username just registerted ".date( "00:i:s", $newsfeed_time)." min ago</p><br>";  
            }

        if ($newsfeed_info_split[0] == "xxx")
            {
            echo "blabla x min ago"
            }

【问题讨论】:

标签: php mysql datetime date compare


【解决方案1】:

由于您使用的是 unix_timespan,因此只需使用基本数学即可:) Unix 时间跨度是自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数。 http://en.wikipedia.org/wiki/Unix_time


$postTime = $newsfeed_into_array[2]; 
$now = time();
$seconds = $now - $postTime; // $seconds now contains seconds since post time

$minutes = ceil($span / 60); // minutes since post time

或者,您可以创建一个打印秒、分钟、小时等的函数

【讨论】:

    【解决方案2】:

    我用这个(改编自Codeigniter Forums - Nicer Dates):

    if( ! function_exists('relative_time'))
    {
        function relative_time($datetime)
        {
            if(!$datetime)
            {
                return "no data";
            }
    
            if(!is_numeric($datetime))
            {
                $val = explode(" ",$datetime);
                $date = explode("-",$val[0]);
                $time = explode(":",$val[1]);
                $datetime = mktime($time[0],$time[1],$time[2],$date[1],$date[2],$date[0]);
            }
    
            $difference = time() - $datetime;
            $periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
            $lengths = array("60","60","24","7","4.35","12","10");
    
            if ($difference > 0)
            {
                $ending = 'ago';
            }
            else
            {
                $difference = -$difference;
                $ending = 'to go';
            }
            for($j = 0; $difference >= $lengths[$j]; $j++)
            {
                $difference /= $lengths[$j];
            }
            $difference = round($difference);
    
            if($difference != 1)
            {
                $period = strtolower($periods[$j].'s');
            } else {
                $period = strtolower($periods[$j]);
            }
    
            return "$difference $period $ending";
        }
    
    
    }
    

    【讨论】:

    • 这是一个非常棒的功能。有类似的东西,但它有点长。输出分钟、秒、小时等。会调整它来做同样的事情,因为这真的很短。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多