Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何以天/分/秒为单位计算unix时间戳?_Php_Timestamp - Fatal编程技术网

Php 如何以天/分/秒为单位计算unix时间戳?

Php 如何以天/分/秒为单位计算unix时间戳?,php,timestamp,Php,Timestamp,我有一个脚本来比较登录日期/时间和注销日期/时间,然后将这两个值之间的差异添加到MSSQL 2005表的totaltime列中。例如:如果用户仅联机几秒钟,它将添加大约98 unix时间戳的值。那么,如果可能的话,如何在网站上以人工阅读的方式显示该值:天/分/秒 非常感谢你检查我的问题。如果能帮助我,我将不胜感激 这是我的排名脚本,我想包括: function TotalTimeRank() { $db = $this->database[GDB]; $num_rows =

我有一个脚本来比较登录日期/时间和注销日期/时间,然后将这两个值之间的差异添加到MSSQL 2005表的totaltime列中。例如:如果用户仅联机几秒钟,它将添加大约98 unix时间戳的值。那么,如果可能的话,如何在网站上以人工阅读的方式显示该值:天/分/秒

非常感谢你检查我的问题。如果能帮助我,我将不胜感激

这是我的排名脚本,我想包括:

function TotalTimeRank()
{
    $db = $this->database[GDB];
    $num_rows = $db->doQuery('SELECT TOP 100 ID, Name, (SELECT SUM(CoolPoint) FROM DATA WHERE DATA.User = INFO.User AND DATA.Auth IN(1, 2)) as Points FROM INFO WHERE INFO.User NOT IN (1199,16300) ORDER BY Points DESC');
    if ($num_rows == -1)
    {
        $db->getError();
        return;
    }

    $n = 1;
    $content = '';
    while ($row = $db->doRead())
    {
        $data = array('rank-id' => $row['Num'], 'rank-pos' => $n++, 'rank-name' => $row['Name'], 'rank-points' => number_format(intval($row['Points'])));
        $content .= Template::Load('pointrank-' . ($n % 2 == 1 ? 2 : 1), $data);
    }

    $this->content = Template::Load('total_pointrank', array('ranks' => $content));
}

那么,将我想要的内容包含到上面的脚本中,以便根据我的
数据表中的
totaltime
列显示每个用户的在线总时间,最好的方法是什么?我知道如何将其包括在内,但我对如何将其转换为上述函数中的人工阅读感到困惑。

这应该适合您的需要:

$timestamp_diff = 456; // your timestamp difference here
echo secondsToTime($timestamp_diff);
这个功能是:

function secondsToTime($seconds) { // returns days/hours/minutes/seconds
    $dtF = new DateTime("@0");
    $dtT = new DateTime("@$seconds");
    return $dtF->diff($dtT)->format('%a/%h/%i/%s');
}
基于

编辑:将其与现有脚本放在一起: (我想是吧?)


是的,用脚本更新了我的帖子,我想把总时间包括进去。这可能会对你有所帮助:这只是数学。时间戳=秒。开始分裂。e、 g.
61->1分1秒
谢谢,但我无法成功实现上述脚本的类似功能。这实际上是我的问题。不过,我把我的主要帖子和我的脚本放在了我想放进去的地方。我知道如何显示数字,但不确定如何在上面的函数中将其转换为人类阅读。如果你能在这方面帮助我,我将不胜感激。谢谢,谢谢。我已经编辑了一点,包括我自己的格式等。非常感谢,答案是100%接受+1投赞成票。再次感谢!好的,很好,你用期望的输出完成了。我用天/分/秒编辑:格式(“%a/%i/%s”)
function TotalTimeRank()
{
    $db = $this->database[GDB];
    $num_rows = $db->doQuery('SELECT TOP 100 ID, Name, (SELECT SUM(CoolPoint) FROM DATA WHERE DATA.User = INFO.User AND DATA.Auth IN(1, 2)) as Points FROM INFO WHERE INFO.User NOT IN (1199,16300) ORDER BY Points DESC');
    if ($num_rows == -1)
    {
        $db->getError();
        return;
    }

    $n = 1;
    $content = '';
    while ($row = $db->doRead())
    {
        $data = array('rank-id' => $row['Num'], 'rank-pos' => $n++, 'rank-name' => $row['Name'], 'rank-points' => $this->secondsToTime(intval($row['Points'])));
        $content .= Template::Load('pointrank-' . ($n % 2 == 1 ? 2 : 1), $data);
    }

    $this->content = Template::Load('total_pointrank', array('ranks' => $content));
}

function secondsToTime($seconds) { // returns days/minutes/seconds
    $dtF = new DateTime("@0");
    $dtT = new DateTime("@$seconds");
    return $dtF->diff($dtT)->format('%a/%i/%s');
}