Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сколько прошло времени
 
 автор: Jaroslav   (31.03.2013 в 15:36)   письмо автору
 
 

Добрый день.

Подскажите, пожалуйста, как сделать вывод текстом сколько прошло времени от определенной даты?

Например: "был на сайте":

3 часа 40 минут назад
7 дней назад
2 месяца назад


нужна функция.

  Ответить  
 
 автор: mihdan   (31.03.2013 в 22:35)   письмо автору
 
   для: Jaroslav   (31.03.2013 в 15:36)
 

А в чем у вас проблема возникла при написании кода? Приведите ваши на работки

  Ответить  
 
 автор: Nextia   (01.04.2013 в 08:38)   письмо автору
 
   для: Jaroslav   (31.03.2013 в 15:36)
 

подозреваю где-то надо хранить дату-время последнего визита пользователя, обрабатывать данные некой функцией для работ с датой временем. Результат работы вычитать из текущей даты-времени (возможно тоже обработанной аналогичной функцией) и показывать пользователю.

/* каков вопрос таков ответ */

  Ответить  
 
 автор: Jaroslav   (01.04.2013 в 12:20)   письмо автору
 
   для: Nextia   (01.04.2013 в 08:38)
 

Ни у кого готовой функции такой нет?
Никто не сталкивался с разработкой соц. сетей и такое не выводил?
Понятно, что можно написать... Думать надо - время ))

  Ответить  
 
 автор: confirm   (01.04.2013 в 12:21)   письмо автору
 
   для: Jaroslav   (01.04.2013 в 12:20)
 

А какая для это еще нужна функция, если таковая стандартная есть?

  Ответить  
 
 автор: Jaroslav   (01.04.2013 в 12:29)   письмо автору
 
   для: confirm   (01.04.2013 в 12:21)
 

Какая стандартная? Это нестандартная.
Но выводится в том же "Вконтакте". Как это делается?
Я правильно понял, что готовой ни у кого нет, надо самому писать?

  Ответить  
 
 автор: confirm   (01.04.2013 в 12:35)   письмо автору
 
   для: Jaroslav   (01.04.2013 в 12:29)
 

Работа с датой/временем, это набор стандартных функций в РНР. Остается только определиться какое время считать "онлайн".

  Ответить  
 
 автор: Jaroslav   (01.04.2013 в 17:03)   письмо автору
 
   для: confirm   (01.04.2013 в 12:35)
 

благодарю, хорошо подсказали ))

  Ответить  
 
 автор: MHz   (01.04.2013 в 23:07)   письмо автору
 
   для: Jaroslav   (01.04.2013 в 12:29)
 

DateTime
DateTime::diff ()
DateTime::format ()

Все что потребуется, все готовое, стандартное) и думать не надо

  Ответить  
 
 автор: MihailGT   (02.04.2013 в 15:20)   письмо автору
 
   для: 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);


Типа того..

  Ответить  
 
 автор: confirm   (02.04.2013 в 15:29)   письмо автору
 
   для: MihailGT   (02.04.2013 в 15:20)
 

Да... Время последнего посещения (а это будет время последнего запроса страниц) храним в базе. Из базы можно вернуть время уже в формате удобном для сравнения, даже еще больше, из не ее можно вернуть уже готовый результат "если А, то онлайн, если В, то разницу времени".

Вы такую арифметику предлагаете, что просто кровь стынет )

  Ответить  
 
 автор: MihailGT   (02.04.2013 в 15:36)   письмо автору
 
   для: confirm   (02.04.2013 в 15:29)
 

А какой в php формат удобный для сравнения?

P.s. арифметика в три строчки. Да и я нигде не утверждаю, что мой код претендует на самый рациональный, просто как вариант.

  Ответить  
 
 автор: confirm   (02.04.2013 в 15:52)   письмо автору
 
   для: 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, это время в секундах которое считается как время нахождения в пользователя в онлайн режиме.
Такой же ответ можно вернуть уже непосредственно запросом к базе.

  Ответить  
 
 автор: Lotanaen   (02.04.2013 в 15:51)   письмо автору
 
   для: MihailGT   (02.04.2013 в 15:20)
 

ну это:

mktime(date("H"),date("i"),date("s"),date("n"),date("j"),date("Y")); 

аналогично
этому

time()

  Ответить  
 
 автор: MHz   (02.04.2013 в 16:15)   письмо автору
 
   для: 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 минут назад */


Так сказать без велосипедов)

А вообще я не понял что нужно автору разность дат посчитать или вообще в целом организовать отслеживание времени посещений)

  Ответить  
 
 автор: Jaroslav   (03.04.2013 в 16:33)   письмо автору
 
   для: MHz   (02.04.2013 в 16:15)
 

Спасибо большое, буду смотреть.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования