как вычесть две даты и время, чтобы получить разницу

я должен послать электронное письмо, когда пользователь регистрирует электронную почту, содержащую ссылку, которая стала недействительной через шесть часов, что они делают при отправке электронной почты. Я обновляю db с полем emailSentDate типа «datetime», теперь я получил текущую дату и время и сделанный с тем же форматом, что и в db, теперь я хочу найти, что обе эти даты и время имеют разницу в 6 часов или нет, поэтому я могу сделать ссылку недействительной, но я не знаю, как это сделать

мой код выглядит так: im, используя hardcoded значение для db, например

$current_date_time=date("Ymd h:i:s"); $current=explode(" ",$current_date_time); $current_date=$current[0]; $current_time=$current[1]; $db_date_time="2010-07-30 13:11:50"; $db=explode(" ",$db_date_time); $db_date=$db[0]; $db_time=$db[1]; 

я не знаю, как продолжить помощь plz

 <?php //$now = new DateTime(); // current date/time $now = new DateTime("2010-07-28 01:11:50"); $ref = new DateTime("2010-07-30 05:56:40"); $diff = $now->diff($ref); printf('%d days, %d hours, %d minutes', $diff->d, $diff->h, $diff->i); 

отпечатки 2 days, 4 hours, 44 minutes

см. http://docs.php.net/datetime.diff

edit: Но вы также можете перенести проблему на сторону базы данных, например, сохраняя дату / время истечения срока в таблице, а затем выполните запрос типа
... WHERE key='7gedufgweufg' AND expires<Now()
Многие rdbms имеют разумную / хорошую поддержку арифметики даты / времени.

Что вы можете сделать, так это конвертировать обе даты в эпоху Unix , то есть эквивалентное количество секунд с полуночи 31 декабря 1969 года. Из этого вы можете легко определить количество времени, прошедшего между двумя датами. Для этого вы можете использовать mktime () или strtotime ()

Всего наилучшего.

$ hoursDiff = (time () – strtotime ("2010-07-30 13:11:50")) / (60 * 60);

Я предпочел бы работать с меткой времени. Сохраните значение, которое возвращается «time ()» как «savedTime» в вашу базу данных (это временная метка в секундах). Вычитайте это число из «time ()», когда вы проверяете свои шесть часов.

if ((time() - savedTime) > 6 * 3600) // more than 6h ago

или

"SELECT FROM table WHERE savedTime < " . (time() - 6 * 3600)

Это может быть решением вашей проблемы -> Как рассчитать разницу между двумя датами с помощью PHP?