Страница 1 из 2
Дата и время
Добавлено: 29 июл 2012, 18:43
Fedya
Здравствуйте!
У меня пишет дату последнего посещения в виде
Последний раз был здесь 2012-07-29 00:19:34
а хочется, чтобы
Последний раз был здесь 1 день и 10 часов назад
а если день не прошел, то
столько-то часов назад
Re: Дата и время
Добавлено: 30 июл 2012, 09:57
Alazaur
Код: Выделить всё
$oldtime = 1343631396; // TIMESTAMP последнего посещения $currenttime = time() - $oldtime;$days = floor($currenttime / 86400);$hours = floor(($currenttime - $days * 86400) / 3600);if($days) echo "Прошло: " . $days . " дней, " . $hours . " часов.";else if($hours) echo "Прошло: " . $hours . " часов.";else echo "Прошло менее часа";
Re: Дата и время
Добавлено: 30 июл 2012, 11:25
Fedya
Спасибо.
Т.е.
При посещении надо сделать так?
Код: Выделить всё
$cdate = time();$query = "INSERT INTO $table SET vkid='$uid', data='$cdate'";
записывает время посещения (а time разве записывает дату?)
а потом вывести из базы
Код: Выделить всё
$oldtime = $row['data']; // TIMESTAMP последнего посещения$currenttime = time() - $oldtime;$days = floor($currenttime / 86400);$hours = floor(($currenttime - $days * 86400) / 3600);if($days) echo "Прошло: " . $days . " дней, " . $hours . " часов.";else if($hours) echo "Прошло: " . $hours . " часов.";else echo "Прошло менее часа";
вот здесь я правильно присваиваю?
Re: Дата и время
Добавлено: 30 июл 2012, 11:31
Alazaur
ну да как-то так.
time() возвращает TIMESTAMP (время в секундах прошедшее с 1 января 1970 года до настоящего времени).
То есть констукции:
и
аналогичны
Re: Дата и время
Добавлено: 30 июл 2012, 12:04
Fedya
Не понял еще одно,
вот тут
Код: Выделить всё
$oldtime = 1343631396; // TIMESTAMP последнего посещения
как записать время последнего посещения в секундах
Re: Дата и время
Добавлено: 30 июл 2012, 12:07
Fedya
Получается тут мы отнимаем от меньшего большое, нет?
Re: Дата и время
Добавлено: 30 июл 2012, 12:17
gpv123
Re: Дата и время
Добавлено: 30 июл 2012, 12:20
Fedya
аа, я забываю, что это не сам 1970 год
Re: Дата и время
Добавлено: 30 июл 2012, 12:20
Alazaur
В базе создаете поле типа INT и в него записываете, когда пользователь посетил.
Например:
Код: Выделить всё
mysql_query("UPDATE " . $table . " SET date=" . time() . " WHERE vkid = " . $uid);
А когда надо то берете его
Код: Выделить всё
$array = mysql_fetch_assoc(mysql_query("SELECT * FROM " . $table . " WHERE vkid = " . $uid)); $oldtime = $array['date']; // TIMESTAMP последнего посещения$currenttime = time() - $oldtime;$days = floor($currenttime / 86400);$hours = floor(($currenttime - $days * 86400) / 3600);if($days) echo "Прошло: " . $days . " дней, " . $hours . " часов.";else if($hours) echo "Прошло: " . $hours . " часов.";else echo "Прошло менее часа"; //Так же можете его использовать и в таких конструкциях:echo "Дата последнего посещения: " . date("Y-m-d G:i:s", $array['date']);
Fedya писал(а):Получается тут мы отнимаем от меньшего большое, нет?
Почему же, если пользователь был неделю назад, то TIMESTAMP будет меньше чем тот который сейчас. Например 5 минут назад TIMESTAMP был на 300 меньше чем сейчас.
P.S. Уже без меня ответили
Re: Дата и время
Добавлено: 30 июл 2012, 12:38
Fedya
Да, спасибо.
Вот тут я пытался добавить минуты, секунды,
с минутами вроде получилось, а вот секунды не уверен
Код: Выделить всё
$days = floor($currenttime / 86400);$hours = floor(($currenttime - $days * 86400) / 3600);$min = floor(($currenttime - $days * 86400 - $hours * 3600)/60);$sec = floor(($currenttime - $days * 86400 - $hours * 3600 - $min*60)/60);
Правильно?
_____
Не надо в конце делить на 60, все, всем спасибо!