2014-10-08 73 views
0

我有脚本来比较登录日期/时间和注销日期/时间之后,这两个值之间的差异被添加到MSSQL 2005表中的totaltime列。例如:如果用户仅在几秒钟内联机,则会添加例如约98个unix时间戳的值。那么如何将该值作为人类阅读显示在网站上:如果可能,请以天/分/秒为单位?如何计算以天/分/秒为单位的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)); 
} 

那么,什么是包括什么,我想我的等级上面的脚本,所以我可以在网上每个用户的基础上显示总时间的最佳方法我的data表中的totaltime列?我知道如何包含它,但我很困惑如何将它转换为上面这个函数中的人类阅读。

+0

你使用的是PHP吗? – 2014-10-08 19:10:56

+0

是的,用我想包括总时间的脚本更新了我的帖子。 – MobEn 2014-10-08 19:23:23

+0

这可能会帮助你:http://stackoverflow.com/questions/2059603/php-function-to-convert-unix-timestamp-into-minutes-or-hours-or-days-like-digg – 2014-10-08 19:25:00

回答

1

这应该满足您的需求:

$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'); 
} 

基于this

编辑:与您现有的脚本把他们放在一起: (我猜?)

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'); 
} 
+0

谢谢,但是我包括我的主要帖子与我的脚本,我想包括它。我知道如何显示数字,但不知道如何在上面的函数中实际将其转换为人类阅读。如果你能帮助我,我将非常感激。谢谢 – MobEn 2014-10-08 19:24:02

+0

我刚刚编辑添加您的脚本 – Yoric 2014-10-08 19:37:31

+0

谢谢,真棒。我已经编辑了一下,包括我自己的格式等。非常感谢和答案是100%接受+1投票。再次感谢! – MobEn 2014-10-08 19:55:25

相关问题