PHP时间已过,删除秒前的 "and"

标签 php mysql unix unix-timestamp elapsedtime

所以,我得到了这个工作代码,它将 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/

相关文章:

javascript - 对 Jquery 和 Css 文件使用 cdn - 覆盖 Prestashop 的默认设置

MySQL - 插入信息后更新列

mysql - 如何在 order by 子句之后选择编号列

linux - 如何grep值小于或等于值的行

javascript - Ajax调用失败

php - 读取 CSV,但创建包含行的单个数组,而不是多维数组?

unix - 将特殊字符传递到 telnet Unix

linux - Linux-Unix 中的中文/日文用户名

php - 表单未正确提交

mysql - MySql 和 Node.js 中的批处理