Дата и время

Программирование, которое не связано с API и Flash.

Дата и время

Сообщение Fedya » 29 июл 2012, 18:43

Здравствуйте!
У меня пишет дату последнего посещения в виде

Последний раз был здесь 2012-07-29 00:19:34

а хочется, чтобы

Последний раз был здесь 1 день и 10 часов назад
а если день не прошел, то столько-то часов назад
Fedya

 
Автор темы
Сообщения: 174
Зарегистрирован: 21 июл 2012, 19:56
Благодарил (а): 22 раз.
Поблагодарили: 6 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Дата и время

Сообщение Alazaur » 30 июл 2012, 09:57

  1. $oldtime = 1343631396; // TIMESTAMP последнего посещения
  2. $currenttime = time() - $oldtime;
  3. $days = floor($currenttime / 86400);
  4. $hours = floor(($currenttime - $days * 86400) / 3600);
  5. if($days) echo "Прошло: " . $days . " дней, " . $hours . " часов.";
  6. else if($hours) echo "Прошло: " . $hours . " часов.";
  7. else echo "Прошло менее часа";

За это сообщение автора Alazaur поблагодарил:
Fedya
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

Re: Дата и время

Сообщение Fedya » 30 июл 2012, 11:25

Спасибо.

Т.е.
При посещении надо сделать так?
  1. $cdate = time();
  2. $query = "INSERT INTO $table SET vkid='$uid', data='$cdate'";

записывает время посещения (а time разве записывает дату?)

а потом вывести из базы

  1. $oldtime = $row['data']; // TIMESTAMP последнего посещения
  2. $currenttime = time() - $oldtime;
  3. $days = floor($currenttime / 86400);
  4. $hours = floor(($currenttime - $days * 86400) / 3600);
  5. if($days) echo "Прошло: " . $days . " дней, " . $hours . " часов.";
  6. else if($hours) echo "Прошло: " . $hours . " часов.";
  7. else echo "Прошло менее часа";



вот здесь я правильно присваиваю?
Fedya

 
Автор темы
Сообщения: 174
Зарегистрирован: 21 июл 2012, 19:56
Благодарил (а): 22 раз.
Поблагодарили: 6 раз.

Re: Дата и время

Сообщение Alazaur » 30 июл 2012, 11:31

ну да как-то так.
time() возвращает TIMESTAMP (время в секундах прошедшее с 1 января 1970 года до настоящего времени).
То есть констукции:

и

аналогичны

За это сообщение автора Alazaur поблагодарил:
Fedya
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

Re: Дата и время

Сообщение Fedya » 30 июл 2012, 12:04

Не понял еще одно,
вот тут
  1. $oldtime = 1343631396; // TIMESTAMP последнего посещения

как записать время последнего посещения в секундах
Fedya

 
Автор темы
Сообщения: 174
Зарегистрирован: 21 июл 2012, 19:56
Благодарил (а): 22 раз.
Поблагодарили: 6 раз.

Re: Дата и время

Сообщение Fedya » 30 июл 2012, 12:07

Получается тут мы отнимаем от меньшего большое, нет?
Fedya

 
Автор темы
Сообщения: 174
Зарегистрирован: 21 июл 2012, 19:56
Благодарил (а): 22 раз.
Поблагодарили: 6 раз.

Re: Дата и время

Сообщение gpv123 » 30 июл 2012, 12:17


За это сообщение автора gpv123 поблагодарил:
Fedya
gpv123

 
Сообщения: 346
Зарегистрирован: 29 янв 2012, 20:57
Благодарил (а): 17 раз.
Поблагодарили: 73 раз.

Re: Дата и время

Сообщение Fedya » 30 июл 2012, 12:20

аа, я забываю, что это не сам 1970 год :D
Fedya

 
Автор темы
Сообщения: 174
Зарегистрирован: 21 июл 2012, 19:56
Благодарил (а): 22 раз.
Поблагодарили: 6 раз.

Re: Дата и время

Сообщение Alazaur » 30 июл 2012, 12:20

В базе создаете поле типа INT и в него записываете, когда пользователь посетил.
Например:
  1. mysql_query("UPDATE " . $table . " SET date=" . time() . " WHERE vkid = " . $uid);

А когда надо то берете его
  1. $array = mysql_fetch_assoc(mysql_query("SELECT * FROM " . $table . " WHERE vkid = " . $uid));
  2.  
  3. $oldtime = $array['date']; // TIMESTAMP последнего посещения
  4. $currenttime = time() - $oldtime;
  5. $days = floor($currenttime / 86400);
  6. $hours = floor(($currenttime - $days * 86400) / 3600);
  7. if($days) echo "Прошло: " . $days . " дней, " . $hours . " часов.";
  8. else if($hours) echo "Прошло: " . $hours . " часов.";
  9. else echo "Прошло менее часа";
  10.  
  11. //Так же можете его использовать и в таких конструкциях:
  12. echo "Дата последнего посещения: " . date("Y-m-d G:i:s", $array['date']);



Fedya писал(а):Получается тут мы отнимаем от меньшего большое, нет?

Почему же, если пользователь был неделю назад, то TIMESTAMP будет меньше чем тот который сейчас. Например 5 минут назад TIMESTAMP был на 300 меньше чем сейчас.

P.S. Уже без меня ответили :D

За это сообщение автора Alazaur поблагодарил:
Fedya
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

Re: Дата и время

Сообщение Fedya » 30 июл 2012, 12:38

Да, спасибо.

Вот тут я пытался добавить минуты, секунды,
с минутами вроде получилось, а вот секунды не уверен :D

  1. $days = floor($currenttime / 86400);
  2. $hours = floor(($currenttime - $days * 86400) / 3600);
  3. $min = floor(($currenttime - $days * 86400 - $hours * 3600)/60);
  4. $sec = floor(($currenttime - $days * 86400 - $hours * 3600 - $min*60)/60);

Правильно?



_____
Не надо в конце делить на 60, все, всем спасибо!
Fedya

 
Автор темы
Сообщения: 174
Зарегистрирован: 21 июл 2012, 19:56
Благодарил (а): 22 раз.
Поблагодарили: 6 раз.

След.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в Программирование на PHP и других языках (без использования API)



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0