|
|
|
| Всем привет! Сегодня за разработкой столкнулся с такой проблемой, вот суть:
на первой странице я определяю текущей timestamp с помощью функции time() и через сессию, тобишь $_SESSION['time'], передаю время на другую страницу. На следующей странице определяю ещё один timestamp , т.е $time = time(); и узнаю разницу, т.е сколько секунд прошло, т.е $time2 = ($time - $_SESSION['time']. Получается некоторое значение, допустим 20. И вот, мне надо вывести в следующем порядке: кол-во часов, кол-во минут, кол-во секунд. Так вот, если у нас будет 20 секунд, то у меня минуты и секунды выводятся правильно, а часы нет, вместо 0 пишет 7! Подскажите пожалуйста в чём дело.
P.s о применении microtime() речи не идёт, т.к мин. исчисление секунда. | |
|
|
|
|
|
|
|
для: Alon
(09.08.2007 в 14:01)
| | вот код страницы номер 2.
$time2 = ($time - $_SESSION['time']);
function vyvod_vremeni ($time2)
{
global $h;
global $min;
global $s;
$data = date ("H i s", $time2);
list ($h, $min, $s) = sscanf ($data, "%d %d %d");
$h = trim ($h);
$min = trim ($min);
$s = trim ($s);
}
print "$h<br/>$min<br/>$s";
|
| |
|
|
|
|
|
|
|
для: Alon
(09.08.2007 в 14:04)
| | Извините, вот правильно.
$time2 = ($time - $_SESSION['time']);
function vyvod_vremeni ($time2)
{
global $h;
global $min;
global $s;
$data = date ("H i s", $time2);
list ($h, $min, $s) = sscanf ($data, "%d %d %d");
$h = trim ($h);
$min = trim ($min);
$s = trim ($s);
}
vyvod_vremeni($time2);
print "$h<br/>$min<br/>$s";
|
| |
|
|
|
|
|
|
|
для: Alon
(09.08.2007 в 14:05)
| | вывод при 20 секундах будет такой:
7 // часы - тут вообще то 0 должно быть, вот это и есть вопрос, откуда здесь 7 ?
0 // минуты
20 // секунды. | |
|
|
|
|
|
|
|
для: Alon
(09.08.2007 в 14:08)
| | Странно что Вы сессию не стартуете session_start(); | |
|
|
|
|
|
|
|
для: Faraon
(09.08.2007 в 14:15)
| | Я сессию стартую как и положено. Просто я вырезал проблемный кусок кода из скрипта и всё. Это всего лишь часть, малая часть. Остальное к данному вопросу не относится. | |
|
|
|
|
|
|
|
для: Faraon
(09.08.2007 в 14:15)
| | Если кто знает, пожалуйста, отпишитесь! | |
|
|
|
|
|
|
|
для: Alon
(09.08.2007 в 15:17)
| | функция date не предназначена для преобразования интервалов времени. Она работает только с абсолютными величинами.
Преобразуйте интервал собственным кодом. | |
|
|
|
|
|
|
|
для: Alon
(09.08.2007 в 14:05)
| | date принимает аргументом timestamp, а это величина относительная :)
попробуйте date ("d.m.Y H:i:s",0); и Вы получите стандартное значение :)
поэтому давать этой функции в качестве аргумента абсолютное количество секунд не совсем правильно.
Попробуйте функцию:
function DateDiff ($interval,$date1,$date2) {
$timedifference = $date2 - $date1;
switch ($interval) {
case 'w':
$retval = bcdiv($timedifference,604800);
break;
case 'd':
$retval = bcdiv($date2 - $date1 - 1, 86400)+1;
break;
case 'h':
$retval =bcdiv($timedifference,3600);
break;
case 'n':
$retval = bcdiv($timedifference,60);
break;
case 's':
$retval = $timedifference;
break;
}
return $retval;
}
|
| |
|
|
|
|
|
|
|
для: ise-dvp
(09.08.2007 в 16:11)
| | Хорошо, приведу её своим кодом. Благодарю. | |
|
|
|