Моя цель: Удалите 4 часа из времени в базе данных, а затем запустите код для отправки текста. При этом удалите секунды и отсчитывайте только часы и минуты. Секунды удаляются в части PHP и отображаются, но не удаляются в базе данных (было бы удобно, если бы кто-то мог научить меня этой части также отображать только часы и минуты и удалять секунды из БД)
В настоящее время у меня есть:
#Variables
$Time = Time in the DB
$TimeMinus = strtotime('- 4 hours');
$TimeNow = date("h:i:sa");
$cleantime = substr($Time,0,5);
Затем я попытался запустить следующее:
$TimeRemoved = substr($TimeNow,0,5) - $TimeMinus;
и отладить его через
echo "Current time: $TimeNow<br>Time in DB: $cleantime<br/>Time with four hours removed: $TimeRemoved.";
но я получаю такой ответ:
Current time: 05:55:09pm
Time in DB: 17:40
Time with four hours removed: -1536580504.
Странно отображается время с удаленными четырьмя часами. Я не лучший в mysqli или php, так что извините за кодирование.
Вроде работает как положено. Strtotime (-4 часа) даст вам «сейчас» - 4 часа по времени Unix (секунды, прошедшие с 1970 года). Когда вы удалите это из своего времени, это строка, она вернет отрицательное значение
Сосредоточьте свой вопрос на том, что у вас есть и чего вы хотите, это немного сбивает с толку. Включите образец ввода и то, как он должен выглядеть после запуска кода






Для решения на основе MySQL вы можете использовать функцию TIME_FORMAT с маской формата, содержащей только часы и минуты. Например:
SELECT TIME_FORMAT('15:02:28', '%H:%i')
FROM dual;
15:02
$time4=strtotime($sqltime - 14400); // your sqltime minus 4 hours
$cleantime = date( 'G:i', $time4);
Где sqltime - это дата и время, которое вы получаете из своей БД.
Вы хотите сначала превратить его в метку времени, а затем изменить ее.
Я не уверен, что именно вам нужно, тогда я покажу вам кучу результатов:
$times = [];
$times["db"] = strtotime($Time);
$times["now"] = time();
$times["removed"] = strtotime('- 4 hours');
$times["removedFromDB"] = $times["db"] - 60 * 4;
foreach ($times as $key => $time) {
echo $key . " - " . date("H:i", $time) . " | ";
}
Я изменил код $ TimeRemoved на: $ TimeRemoved = substr ($ Time, 0,5) - 4; и теперь отображается «13». Конечно, это правильно, но минуты не отображаются.