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);