所以,我有这个工作代码,它将MySQL日期转换为UNIX时间戳,并从当前日期()中减去它,以显示“自X以来经过的时间”计时器 . (从数据库中获取日期的部分因为它在另一个脚本中而丢失)
<?php
function time_elapsed($secs){
$bit = array(
' year' => $secs / 31556926 % 12,
' week' => $secs / 604800 % 52,
' day' => $secs / 86400 % 7,
' hour' => $secs / 3600 % 24,
' minute' => $secs / 60 % 60,
' second' => $secs % 60
);
foreach($bit as $k => $v){
if($v > 1)$ret[] = $v . $k . 's';
if($v == 1)$ret[] = $v . $k;
}
array_splice($ret, count($ret)-1, 0, 'and');
$ret[] = 'ago.';
return join(' ', $ret);
}
$nowtime = time() + 10; //add 10s to avoid error
$oldtime = strtotime($mysqltime2);
$time_elapsed = time_elapsed($nowtime-$oldtime)."\n";
echo wordwrap($time_elapsed,35,"
\n"); //split long line
?>
如果脚本是在MySQL日期的同一时间执行的,我通过向当前时间戳添加10秒来设法修复报告丢失数组的错误 .
我遇到的另一个问题是脚本显示"and X seconds",即使它之前没有分钟/小时/天/等 . 例如 . “ and X秒" " Y分钟 and X秒" " Z小时Y分钟 and X秒" " N天Z小时Y分钟 and X秒”
我想在秒之前删除“和”,如果之前没有分钟/小时/等 .
关于如何解决这个问题的任何提示?
3 回答
您只能在需要时拼接:
不确定这是否有帮助,但为什么不在mysql中进行大部分日期数学运算?
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
以下是我在网站的评论部分列出帖子之前所做的事情,它输出“2小时前发布的帖子”等
SQL:
PHP(从查询传递到这里):
我能想到的最简单的是