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

у меня есть к посланному электронное письмо, когда пользовательское электронное письмо регистра содержит ссылку, которой становятся недопустимой после шести часов, что я делаю, когда электронное письмо послано, я обновляю дб с полем emailSentDate типа "дата и время" теперь, я получил текущую дату и время и сделал к тому же formate, как это находится в дб теперь, я хочу найти, что и эти даты и время имеют differenc 6 часов или не так, чтобы я мог сделать ссылку недопустимой, но я, donot знают, как сделать это

мой код, похожи на это, я использую значение hardcoded для дб просто, например,

$current_date_time=date("Y-m-d 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];

я не знаю, как продолжить двигаться, помогите

8
задан VolkerK 30 July 2010 в 11:32
поделиться

5 ответов

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

0
ответ дан 5 December 2019 в 06:36
поделиться
<?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);

prints 2 дня, 4 часа, 44 минуты

see http://docs.php.net/datetime.diff

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

19
ответ дан 5 December 2019 в 06:36
поделиться

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

if ((time() - savedTime) > 6 * 3600) // более 6 часов назад

or

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

1
ответ дан 5 December 2019 в 06:36
поделиться

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

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

3
ответ дан 5 December 2019 в 06:36
поделиться

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

2
ответ дан 5 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: