Как рассчитать метку времени Unix в днях / минутах / секундах?

У меня есть скрипт для сравнения даты / времени входа в систему и даты / времени выхода из системы, после чего разница между этими двумя значениями добавляется в столбец totaltime в таблице MSSQL 2005. Например: если пользователь находится в сети всего несколько секунд, он добавит значение, например, около 98 unix timestamp. Итак, как отобразить это значение на веб-сайте в виде человеческого текста: дни / минуты / секунды, если это возможно?

Большое спасибо за проверку моего вопроса. Буду очень признателен за помощь.

Это мой ранг сценарий, где я хочу включить это:

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 колонка в моем data Таблица? Я знаю, как включить это, но я запутался, как преобразовать это в человеческое чтение в этой функции выше.

0

Решение

Это должно соответствовать вашим потребностям:

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

основанный на этот

Изменить: положить все это вместе с существующим сценарием:
(Похоже ?)

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]