PHP-如何在几分钟、几小时、几天、几个月内显示发布的广告

PHP-如何在几分钟、几小时、几天、几个月内显示发布的广告,php,mysql,Php,Mysql,我正在建立一个网站,用户在其中发布状态。 我正在数据库中保存日期时间和状态,类型为datetime 一旦用户从世界任何地方发布状态,它应该首先显示状态发布的时间,然后在60分钟后的小时内显示,在24小时后的天内显示。 然后是几个月和几年 我如何进行所有这些计算并打印结果。 如果有人对此进行了研究,请共享代码。 我不知道该怎么做。您可以使用此功能: function time_elapsed_string($added_on) { $etime = time() - $added_on;

我正在建立一个网站,用户在其中发布状态。
我正在数据库中保存日期时间和状态,类型为
datetime

一旦用户从世界任何地方发布状态,它应该首先显示状态发布的时间,然后在60分钟后的小时内显示,在24小时后的天内显示。
然后是几个月和几年

我如何进行所有这些计算并打印结果。 如果有人对此进行了研究,请共享代码。

我不知道该怎么做。

您可以使用此功能:

function time_elapsed_string($added_on)
{
    $etime = time() - $added_on;

    if ($etime < 1)
    {
        return '0 seconds';
    }

    $a = array( 365 * 24 * 60 * 60  =>  'year',
                 30 * 24 * 60 * 60  =>  'month',
                      24 * 60 * 60  =>  'day',
                           60 * 60  =>  'hour',
                                60  =>  'minute',
                                 1  =>  'second'
                );
    $a_plural = array( 'year'   => 'years',
                       'month'  => 'months',
                       'day'    => 'days',
                       'hour'   => 'hours',
                       'minute' => 'minutes',
                       'second' => 'seconds'
                );

    foreach ($a as $secs => $str)
    {
        $d = $etime / $secs;
        if ($d >= 1)
        {
            $r = round($d);
            return $r . ' ' . ($r > 1 ? $a_plural[$str] : $str) . ' ago';
        }
    }
}
函数时间\u经过\u字符串($added\u on)
{
$etime=time()-$added\u on;
如果($etime<1)
{
返回“0秒”;
}
$a=数组(365*24*60*60=>“年”,
30*24*60*60=>“月”,
24*60*60=>“天”,
60*60=>“小时”,
60=>“分钟”,
1=>“秒”
);
$a_复数=数组('year'=>'years',
“月”=>“月”,
“天”=>“天”,
“小时”=>“小时”,
“分钟”=>“分钟”,
“秒”=>“秒”
);
foreach($a作为$secs=>$str)
{
$d=$etime/$secs;
如果($d>=1)
{
$r=四舍五入($d);
返回$r.''($r>1?$a_复数[$str]:$str)。'ago';
}
}
}

$added_on variable您的格式必须是strotime(日期格式Y-m-d h:i:s)

ravenanigam解决方案不错,但它是在PHP中,我想这不是您想要的。我认为这个解决方案可能符合你的目的

1.-使用php将时间戳打印到属性中,如。。。例如:

<span class="timestamp" data-timestamp="<?php printMyTimestamp(); ?>"></span>
请随意添加更多信息,如天、月、年


注意:这种方式是动态的,无需发出数百个请求即可工作。这只需要一个请求,datetime保存为AtterBute并计算客户端。PHP方式每次需要查看运行时间时都需要一个新请求。

您能告诉我$ptime是什么吗?为什么$u在变量上加了_,而我们不在何处使用它呢?请告诉我时间格式是什么?谢谢。最后一件事。$added_的时间格式是什么。你能在函数之前定义变量$added_吗?这样我就知道应该如何在这个变量中发送时间。它不起作用。当我使用这个时间2015-8-26 04:00:00。它给了我46年前的信息
$(document).ready( function() {
    // Search all the timestamps
    var timestamps = $(".timestamp");

    timestamps.each( function(i) {
        var element = $(this);
        var timer = setTimeout(function() {
          var time_elapsed = $.now() - element.attr('timestamp');
          var msg = "";

          if (time_elapsed < 60000) {
              msg = "less than one minute ago.";
          } else if (time_elapsed < 3600000) {
              msg = Math.floor(time_elapsed / 60000) + " minute(s) ago.";
          } else {
              msg = Math.floor( (time_elapsed / 60000) / 60) + " hour(s) ago.";
          }

          element.empty().append(msg);
          timer = setTimeout(arguments.callee, 60000)
    }, 200);
});
$milliseconds = round(microtime(true) * 1000);