|
|
|
| Добрый день.
Подскажите, пожалуйста, как сделать вывод текстом сколько прошло времени от определенной даты?
Например: "был на сайте":
3 часа 40 минут назад
7 дней назад
2 месяца назад
нужна функция. | |
|
|
|
|
|
|
|
для: Jaroslav
(31.03.2013 в 15:36)
| | А в чем у вас проблема возникла при написании кода? Приведите ваши на работки | |
|
|
|
|
|
|
|
для: Jaroslav
(31.03.2013 в 15:36)
| | подозреваю где-то надо хранить дату-время последнего визита пользователя, обрабатывать данные некой функцией для работ с датой временем. Результат работы вычитать из текущей даты-времени (возможно тоже обработанной аналогичной функцией) и показывать пользователю.
/* каков вопрос таков ответ */ | |
|
|
|
|
|
|
|
для: Nextia
(01.04.2013 в 08:38)
| | Ни у кого готовой функции такой нет?
Никто не сталкивался с разработкой соц. сетей и такое не выводил?
Понятно, что можно написать... Думать надо - время )) | |
|
|
|
|
|
|
|
для: Jaroslav
(01.04.2013 в 12:20)
| | А какая для это еще нужна функция, если таковая стандартная есть? | |
|
|
|
|
|
|
|
для: confirm
(01.04.2013 в 12:21)
| | Какая стандартная? Это нестандартная.
Но выводится в том же "Вконтакте". Как это делается?
Я правильно понял, что готовой ни у кого нет, надо самому писать? | |
|
|
|
|
|
|
|
для: Jaroslav
(01.04.2013 в 12:29)
| | Работа с датой/временем, это набор стандартных функций в РНР. Остается только определиться какое время считать "онлайн". | |
|
|
|
|
|
|
|
для: confirm
(01.04.2013 в 12:35)
| | благодарю, хорошо подсказали )) | |
|
|
|
|
|
|
|
для: Jaroslav
(01.04.2013 в 12:29)
| | DateTime
DateTime::diff ()
DateTime::format ()
Все что потребуется, все готовое, стандартное) и думать не надо | |
|
|
|
|
|
|
|
для: Jaroslav
(31.03.2013 в 15:36)
| | Ну можно посчитать кол-во прошедших секунд.
В базу или в файл при выходе записываем последнее посещение в секундах.
mktime(date("H"),date("i"),date("s"),date("n"),date("j"),date("Y"));
|
Дальше считаем разницу между текущим временем и сохраненным.
$date1 = /* то что забрали из базы */;
$date2 = mktime(date("H"),date("i"),date("s"),date("n"),date("j"),date("Y"));
$razn = $date2 - $date1;
|
Дальше считаем делением дни, часы и минуты, например:
$days = floor($razn/86400);
$hours = floor(($razn-86400*$days)/3600);
$mins = floor(($razn-86400*$days-3600*hours)/60);
|
Типа того.. | |
|
|
|
|
|
|
|
для: MihailGT
(02.04.2013 в 15:20)
| | Да... Время последнего посещения (а это будет время последнего запроса страниц) храним в базе. Из базы можно вернуть время уже в формате удобном для сравнения, даже еще больше, из не ее можно вернуть уже готовый результат "если А, то онлайн, если В, то разницу времени".
Вы такую арифметику предлагаете, что просто кровь стынет ) | |
|
|
|
|
|
|
|
для: confirm
(02.04.2013 в 15:29)
| | А какой в php формат удобный для сравнения?
P.s. арифметика в три строчки. Да и я нигде не утверждаю, что мой код претендует на самый рациональный, просто как вариант. | |
|
|
|
|
|
|
|
для: MihailGT
(02.04.2013 в 15:36)
| | А вы как думаете, что удобнее сравнивать - временную метку в секундах, из которой можно получить все остальное, или же заниматься вот этим:
mktime(date("H"),date("i"),date("s"),date("n"),date("j"),date("Y"));
а потом далее еще не понятно чем и зачем?
Если сравнение производить РНР функциями, то требуется только одно выражение:
<?
echo time() - $qyery['time'] <= $online ? 'Онлайн' : 'Последнее посещение ' . date('format', $qyery['time']);
| где $qyery['time'] время последнего посещения в формате unixtimestamp из базы, а $online, это время в секундах которое считается как время нахождения в пользователя в онлайн режиме.
Такой же ответ можно вернуть уже непосредственно запросом к базе. | |
|
|
|
|
|
|
|
для: MihailGT
(02.04.2013 в 15:20)
| | ну это:
mktime(date("H"),date("i"),date("s"),date("n"),date("j"),date("Y"));
|
аналогично
этому
| |
|
|
|
|
|
|
|
для: MihailGT
(02.04.2013 в 15:20)
| |
<?php
$Interval = date_diff (date_create ('25.03.2013 11:01'), date_create (), TRUE);
echo ($Interval->format('%d дней, %h часов, %i минут назад'));
/* 8 дней, 5 часов, 12 минут назад */
|
Так сказать без велосипедов)
А вообще я не понял что нужно автору разность дат посчитать или вообще в целом организовать отслеживание времени посещений) | |
|
|
|
|
|
|
|
для: MHz
(02.04.2013 в 16:15)
| | Спасибо большое, буду смотреть. | |
|
|
|