[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: был энное время
littleman
$last_date = r['time']; 

Данный скрипт выводит из БД time() NIX время, но я хочу вычислять последняя время когда заходил узер.
PHP можно, но лишний раз такие веши перекладывать на сервак не хочеться.
Подскажите примерно как обработать, а я дальше допилю .
FatCat
Может удобней сколько времени назад заходил?
Текущее время в юникс-формате легко получить:
var t_now = Math.round(new Date().getTime() / 1000);


_____________
Бесплатному сыру в дырки не заглядывают...
littleman
FatCat
Я может не правильно выразился, я уже достаю время в NIX , у меня в БД он обновляет.
Я хочу написать обработчик, не на PHP, а на JS чтобы JS сам высчитывал и писал сколько нету времени на сайте человека или он онлайн.
На PHP я чуть погодя выложу, так как на JS я вообще не силён, примерно могу понять что и куда но не полностью .
littleman
Вот такой конструктор собрал, скажу он толком не работает не додумал.
Но мне нужно примерно такое на JS.
        $online = $rows['last_date'];//NIX времмя
if ( $online < ( time() - 60 ) ){
$online = 'Был '. date('s', $online).' сек. назад';
} elseif( $online < time() ){
$online = 'Был '. date('i', $online).' мин. назад';
}

Там идёт отчёт времени сколько нет времени человека на сайте, 2 минуты, 2 часа 40 минут, вчера заходи в 15.53 , был 16 мая 2014г .
Что такое .
littleman
$online = date('H.i.s' , (14400 - time()) - $rows['last_date'] );

Вот точнее, там идёт отчёт времени, вот только - 14400 = 4 часа не привёл понулям, так как отчёт вёл +4 по Гринвичу .
rooor
а есть смысл извращаться? у клиента будет клиентское время, как вы узнаете в каком часовом поясе он находится? Не такие это великие расчёты, чтобы о них беспокоиться. Тем более что время прошлой авторизации вы всё равно достаёте из БД, вот и считайте в БД))
littleman
rooor
Я минусую от реалтайм времени, а то получиться ушёл он 20 назад, а расчетает и выдаст 4 часа 20 назад тому был.
        $unixtime = time() - 14400;
$online = date('H.i.s' , $unixtime - $rows['last_date'] );
$online = explode('.', $online);
if ($online[0] != 00){
$online = "Был ".$online[0]." назад";
} elseif ( $online[1] != 00) {
$online = "Был ".$online[1]." минут назад";
}

Вот такой мини изврат собрал на PHP, можно его на JS переделать ?
FatCat
Цитата (littleman @ 20.06.2014 - 19:38)
$rows['last_date'];//NIX времмя

Дык от этого и плясать:
<script type="text/javascript">
var
t_war = <?php echo $rows['last_date']; ?>
var
t_now = Math.round(new Date().getTime() / 1000);
var del_time = t_now - t_war;
</script>
Теперь в переменной del_time содержится количество секунд с прошлого посещения (из базы).

Но это порочный подход.
Цифра в базу пишется по времени сервера? А текущее время берется по часам компьютера пользователя. Врямя на сервере и на компьютере пользователя может сильно различаться.

Значит код нужно усложнять: на сервере считать сколько прошло секунд с прошлого визита до момента генерации страницы; а на клиенте считать время от загрузки страницы до текущего. Сумма двух цифр и даст желаемый результат в секундах.
Дальше джаваскриптом пересчитать его в человеко-понятные величины.

_____________
Бесплатному сыру в дырки не заглядывают...
littleman
FatCat
Ну если выдать JS скрипту last_date из БД(последний заход), а также date_server - время сервера, а JS уже будет по этим данным делать расчёты (а не по своему времени).
FatCat
Цитата (littleman @ 24.06.2014 - 15:17)
Ну если выдать JS скрипту last_date из БД(последний заход), а также date_server - время сервера

Я об этом и писал: отдать не время последнего захода на сервер, а время, прошедшее с последнего захода.


Цитата (littleman @ 24.06.2014 - 15:17)
а JS уже будет по этим данным делать расчёты

Это самое геморройное, если отдавать грамотным языком: не "90125 секунд", а "1 день, 1 час, 2 минуты, 5 секунд".

_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.