Вычисление разницы в датах, PHP
190 повідомлень
#15 років тому
Господа программисты, помогите. Бьюсь уже два часа, голова не варит.Есть некая дата,заведомо меньше текущей. Нужно высчитать, прошло ли уже 30 минут с той даты до текущего момента. Как это сделать? Я понимаю что date() и mktime() - но запарился подбирать аргументы.
649 повідомлень
#15 років тому
"Мы предоставляем полный комплекс услуг по созданию и продвижению сайтов любой сложности."------------
Уберите это из резюме

По теме: в каком виде находится "некая дата"?
190 повідомлень
#15 років тому
При чем здесь резюме? Типа, если там так написано, то нет смысла спрашивать совета?Вид даты не имеет значения. Она в мускуле (тип DATETIME), но превратить из любого в любой я могу
649 повідомлень
#15 років тому
Если вы все можете, то в чем проблема?Превращаете текущую дату в Unix timestamp с помощью mktime(час, минута, секунда, месяц, день, год).
Текущее время в Unix timestamp - это time().
Отнимаете от текущего времени "некое время", делите на 1800. Вот вам разница между ними в минутах.
649 повідомлень
#15 років тому
Цитата ("vovan_f"):Гуглите php date diff.
Может не спасти, так как PHP 5 >= 5.3.0 нужно.
190 повідомлень
#15 років тому
"Все можете" и "Сэкономить время на совете" - чувствуете разницу. Сможем, но нужно быстро в данный момент, и гуглить нет времени.Почему 1800? Это что за число? 30*60? Может, делить на 60? (timestamp это секунды)
771 повідомлення
#15 років тому
Средствами MySqlЦитата:
DATEDIFF() returns expr1 – expr2 expressed as a value in days from one date to the other. expr1 and expr2 are date or date-and-time expressions. Only the date parts of the values are used in the calculation.
mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30';
-> 1
mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31';
-> -31
подробнее тут посилання
649 повідомлень
#15 років тому
Цитата ("ConceptART"):Почему 1800? Это что за число? 30*60? Может, делить на 60? (timestamp это секунды)
Да.
Это я тупанул.
771 повідомлення
#15 років тому
Упс, недочитал сабж. DATEDIFF майэскьюэля не подходит, считает дни. Но есть ещё вариант высчитывать разницу сразу в запросе преобразованием unix_timestamp(date1) - unix_timestamp(date2)
1594 повідомлення
#15 років тому
Цитата ("penguin"):Если вы все можете, то в чем проблема?
Превращаете текущую дату в Unix timestamp с помощью mktime(час, минута, секунда, месяц, день, год).
Текущее время в Unix timestamp - это time().
Отнимаете от текущего времени "некое время", делите на 1800. Вот вам разница между ними в минутах.
Почти правильно =)
Преводим "некую дату" $time1 в unix timestamp через mktime.
Получаем текущую дату $time2 = time()
if(time2 - $time1 >= 1800) { echo "полчаса прошло!"; }
190 повідомлень
190 повідомлень
#15 років тому
Спасибо всем, я пока отвлекся понял в чем была моя ошибка - я неправильно превращал из mysql datetime в unix timestamp - запарился сильно. Anexroid прав был.Еще раз - спасибо!