Я огляделся и ничего не увидел, что я работал с макетом базы данных. В основном мне нужно взять текущее время и заданное время события и посмотреть, находится ли текущее время за 10 минут до времени события. Это мой тестовый файл, он получает текущее время в переменной, затем вытягивает eventTime из таблицы базы данных, устанавливает время события в переменную, вычитает текущее время из времени события и печатает разницу. Проблема в том, что мне нужны минуты, и она просто печатает часы.
Например, 11:00 – 9:15 дает мне 1, где мне нужно сказать 105 (количество минут), я действительно выглядел повсюду и не могу найти ничего, что не связано с изменением структуры db.
База данных хранит время события в 24-часовом формате в часах и минутах ex 13:01, а текущее время устанавливается в том же формате в php, используя дату («H: i»)
Вот несколько тестовых кодов: include dbconnect.php – это то, как я подключаюсь к моей базе данных.
Спасибо за любую помощь, которую вы можете предложить!
<?php include 'dbconnect.php'; $the_time = date('H:i'); echo $the_time." </br></br>"; $sql="SELECT eventTime FROM events"; $result=$conn->query($sql); while ($row = $result->fetch_assoc()) { $new_time=$row['eventTime']; echo $new_time."New Time</br>"; echo $the_time-$new_time."The Difference</br></br>"; } ?>
Благодаря Гэмстеру Каталину и Джону Конде он решен. Вот рабочий код:
<?php include 'dbconnect.php'; date_default_timezone_set('America/New_York'); $the_time = date('H:i'); echo $the_time." </br></br>"; $sql="SELECT eventTime FROM events"; $result=$conn->query($sql); while ($row = $result->fetch_assoc()) { $new_time=$row['eventTime']; echo $new_time."New Time</br>"; $datetime1 = new DateTime($the_time); $datetime2 = new DateTime($new_time); $interval = $datetime1->diff($datetime2); $hours=$interval->format('%h'); $minutes= $interval->format('%i'); echo $hours." The Difference in Hours</br>".$minutes." The Difference in Minutes</br></br>"; } ?>
$datetime1 = new DateTime(); $datetime2 = new DateTime($row['eventTime']); $interval = $datetime1->diff($datetime2); $elapsed = $interval->format('%i minutes'); echo $elapsed;
Не забывайте, что MySQL достаточно эффективен для таких вещей:
SELECT CURTIME() AS currentTime, eventTime, TIME_FORMAT(CURTIME() - TIME(eventTime), '%h:%i' ) AS difference FROM events;
Или получить только разницу:
SELECT TIME_FORMAT(CURTIME() - TIME(eventTime), '%h:%i' ) AS difference FROM events;