所以,我得到了这个工作代码,它将 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,"<br />\n"); //split long line
?>
如果脚本是在 MySQL 日期的同一时间执行的,通过在当前时间戳上添加 10 秒,我设法修复了报告丢失数组或其他问题的错误。
我遇到的另一个问题是脚本显示“和 X 秒”,即使之前没有分钟/小时/天/等。 例如。 “和 X 秒” “Y 分钟和 X 秒” “Z 小时 Y 分钟和 X 秒” “N 天 Z 小时 Y 分钟和 X 秒”
只有在秒之前没有分钟/小时/等的情况下,我才想删除秒之前的“和”。
关于如何解决这个问题有什么建议吗?
最佳答案
您只能在需要时拼接:
if( count($ret) > 1 ) {
array_splice($ret, count($ret)-1, 0, 'and');
}
关于PHP时间已过,删除秒前的 "and",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26929275/