Последние 2 часа я гуглил и выяснил, что проблема связана с эпохой Unix.
То, что я хочу сделать, это обратный отсчет в php. Как вы можете видеть ниже, (дайте им буквы, чтобы их было легче отсылать).
B минус C равен A. Но это дает мне это: «31.1269 19:00:08» но я бы хотел иметь «00/00/00 00:00:08».
(A) 31.1269 19:00:08 = (B) 25.03.15 00:13:26 — (C) 25.03.15 00:13:18
И эта проблема вызывает проблему в моем обратном отсчете. Когда я хочу начать обратный отсчет с 10:00 (мин, сек), он начинает обратный отсчет с 60:00, а когда он достигает 50:00, обратный отсчет прекращается. Так что это работает! через 10 минут он останавливается, но проблема в том, что он отсчитывает от 60. Так что, я думаю, это вызвано эпохой Unix. Если я могу инициализировать ненужную часть, в дате, к нулю или нулю, я могу решить проблему.
$pastTime = $currentTime - $row['startTime'];
if($pastTime >= $row['durationTime']){
$processStatus = "Completed";
$remainingTime = 0;
}else{
$processStatus = "in Process";
$remainingTime = $durationTime - $pastTime;
}
echo "<td>" . date('i:s', $remainingTime) . "</td>";
echo "<td>$processStatus</td>";
echo "</tr>";
Это часть моего кода. Итак, у меня проблемы, когда я делаю это; date('i:s', $remainingTime)
, Все переменные, которые вы видите, содержат секунды, которые генерируются time()
функция.
Вы не делитесь никаким кодом, но я полагаю, что вы вычитаете две метки времени, чтобы вычислить разницу в секундах, а затем форматируете результат как метку времени Unix.
Проблема в этом последнем шаге. Когда вы вычитаете два числа, вы получаете (в основном) правильное число, но затем вы решаете использовать (предположительно) date()
для отображения.
Вместо этого вы можете попробовать использовать два DateTime
объекты, использование diff
чтобы получить разницу (как DateInterval
объект), а затем использовать DateInterval::format
чтобы получить формат, который вы на самом деле хотите.
Других решений пока нет …