Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм - Хочешь поломать голову? 
:(
    Опции темы
Dima85
Дата 2.9.2010, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Около часа уже сижу и все топчусь на одном и том же месте.
Возможно кому-то это кажется простым.
Вобщем такая ситуация.
На сайте можно указать время - часы (пример 14:00) во сколько я куда-то еду.
Допустим в 20:00 я выезжаю.
И если сейчас 18:32 то мое объявление на сайте будет находится с 18:32 до 20:00

Формула: if (дата_выезда > чем_сейчас_время) то показываем ее.
Надеюсь это понятно. 
Но если я в 18:32 добавлю объявление что я выезжаю в 13:00 (то есть как бы завтра в обед).
То сайт исходя из моей формулы такое объявление не покажет.

Как написать такую формулу которая поймет и будет показывать объявление завтра до 13:00 если мы его разместили в 18:32?

У нас есть:
Время выезда.
Время размещения на сайте.
Часы - время сейчас.


Это сообщение отредактировал(а) Dima85 - 2.9.2010, 18:56
PM MAIL   Вверх
bars80080
Дата 2.9.2010, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



на редкость путанное объяснение. а почему 14:00 - это не завтра?



в понятие "время" помимо часов и минут, входят ещё и день, месяц и год
PM MAIL WWW   Вверх
Dima85
Дата 2.9.2010, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Если сейчас 18:32 то 14:00 это завтра.

Цитата

в понятие "время" помимо часов и минут, входят ещё и день, месяц и год

посетитель на сайте может указать только часы и минуты.
Но в Время_размещения_объявления, входит часы, минуты, дата, год.
Так же и Время_реального_времени с которым и идет сравнение имеет в себе часы, минуты, дата, год.

Это сообщение отредактировал(а) Dima85 - 2.9.2010, 19:20
PM MAIL   Вверх
bars80080
Дата 2.9.2010, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Dima85 @  2.9.2010,  19:19 Найти цитируемый пост)
Если сейчас 18:32 то 14:00 это завтра.

тогда первый пост вообще не понятен. очевидно, что если сейчас 18:32, то 14:00 это завтра. в чём тогда вопрос?



Цитата(Dima85 @  2.9.2010,  19:19 Найти цитируемый пост)
посетитель на сайте может указать только часы и минуты.

зачем введено такое ограничение, если нужно выбирать ещё и дни? собственно, сами создали себе невозможную ситуацию

я вот, к примеру, своим операторам даю возможность указать тайм-лимит события в пределах суток (часы и минуты), но они указывают именно то время, которое осталось. то есть сейчас 14:10, оператор указывает 4 часа 30 минут, значит время истечёт в 18:40. но бывают редкие ситуации, когда нужно указать более суток, тогда у них есть возможность ещё отредактировать запись, где уже добавлен параметр "дни".
в базе в итоге хранится таймстамп времени истечения. а этот таймстамп считается как "сейчас+указанный срок"


что вам мешает добавить дни или вообще целый календарь?
PM MAIL WWW   Вверх
enoff
Дата 2.9.2010, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



Dima85, ваши "поломать голову" и "необычные задачи" поражают smile 
ответ на ваш вопрос находится в предыдущей теме.
Код

echo strtotime(date('H:i')) > strtotime('12:00') ? "Сегодня" : "Завтра";

Только чуть модифицировать. Смысл тот же.

Это сообщение отредактировал(а) enoff - 2.9.2010, 19:28
PM MAIL ICQ Skype GTalk   Вверх
Dima85
Дата 2.9.2010, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Цитата

Dima85, ваши "поломать голову" и "необычные задачи" поражают smile 
ответ на ваш вопрос находится в предыдущей теме.
Код

echo strtotime(date('H:i')) > strtotime('12:00') ? "Сегодня" : "Завтра";

Только чуть модифицировать. Смысл тот же.


Этого мало. А где условие не показывать завтра после 12:00?


bars80080, да видимо дата просто необходима.
PM MAIL   Вверх
enoff
Дата 2.9.2010, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



Сегодня или завтра выезжаю.
Dima85, 
Цитата(Dima85 @  2.9.2010,  20:19 Найти цитируемый пост)
посетитель на сайте может указать только часы и минуты.

то получается, что
Цитата(Dima85 @  2.9.2010,  20:19 Найти цитируемый пост)

Но в Время_размещения_объявления, входит часы, минуты, дата, год.
Так же и Время_реального_времени с которым и идет сравнение имеет в себе часы, минуты, дата, год.

это одно и тоже время?
Если нет, то первое не верно?
Если может указывать только часы и минуты, то время размещения задает не пользователь?
Скрипт должен сам догадываться?
О времени размещения ничего сказано не было, или я не заметил..
PM MAIL ICQ Skype GTalk   Вверх
Dima85
Дата 2.9.2010, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Цитата

Цитата

Но в Время_размещения_объявления, входит часы, минуты, дата, год.
Так же и Время_реального_времени с которым и идет сравнение имеет в себе часы, минуты, дата, год.

это одно и тоже время?


Нет, первое время когда появилось это объявление.
Второе это time();

Цитата

Если может указывать только часы и минуты, то время размещения задает не пользователь?

Время задает пользователь:
Код

<select name="time" id="time">
<option value="01:00">01:00</option>
<option value="01:30">01:30</option>
***
</select>


Цитата

Скрипт должен сам догадываться?

Да

Цитата

О времени размещения ничего сказано не было, или я не заметил..

Я об этом писал: "Но в Время_размещения_объявления, входит часы, минуты, дата, год."
PM MAIL   Вверх
enoff
Дата 2.9.2010, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



Цитата(Dima85 @  2.9.2010,  20:51 Найти цитируемый пост)

Нет, первое время когда появилось это объявление.

Время размещения объявления, это дата его появления (т.е. когда оно добавилось), я так понимаю.
Цитата(Dima85 @  2.9.2010,  20:51 Найти цитируемый пост)

Время задает пользователь:

Но тут же он может его менять.

Вообще ничего не понятно. В первом посте о времени размещения ни слова.

Добавлено через 1 минуту и 5 секунд
В какой промежуток времени должно показываться объявление?
PM MAIL ICQ Skype GTalk   Вверх
patap
Дата 2.9.2010, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



честно говоря - бред какой-то  smile 

ведь можно уехать завтра в 8:00 утра, или вообще послезавтра...

добавляй дату и не парься. Как по мне так при твоем раскладе, любое время должно отображаться....

12:00 - это сегодняшнее время? завтрашнее? или через год? - ответишь - будет тебе счастье.
мне кажется, это написание алгоритма "Что было раньше - яйцо или курица?" ))


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
Dima85
Дата 2.9.2010, 21:19 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Тема закрыта.  Я не могу донести до вас сути.


Цитата

12:00 - это сегодняшнее время? завтрашнее? или через год? - ответишь - будет тебе счастье.
мне кажется, это написание алгоритма "Что было раньше - яйцо или курица?" ))


12:00 это сегодня если сейчас до 12:00 дня, но может быть и завтра если уже после 12:00.
PM MAIL   Вверх
patap
Дата 2.9.2010, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



так штоле?

Код

  $userTime = strtotime('12:00');
  $currentTime = strtotime(date('H:i'));
  $tomorrow = strtotime('12:00');
  
  if ($userTime > $currentTime || ($currentTime > $userTime && $userTime >= $tomorrow)) {
    echo 'yep';
  } else {
    echo 'nope';
  }


Это сообщение отредактировал(а) patap - 2.9.2010, 21:32


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
Muerto
Дата 2.9.2010, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Dima85, не пойму в чем твоя проблема.
а слабо к символу < взять добавить ещё и = т.е. <=

твое единственное исключение это ведь когда 12:00 сейчас и завтра одинаковы, ну тогда реши для себя сам, оставив к примеру просто < оно тебе выдаст FALSE добавив <= Будет TRUE

т.е. если < -> TRUE то сегодня , добавишь <= и будет тебе и для 12:00 когда на часах 12:00 сегодня


--------------------
user posted image
PM MAIL   Вверх
Dima85
Дата 2.9.2010, 23:21 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



patap, спасибо. Тема закрыта.

Это сообщение отредактировал(а) Dima85 - 2.9.2010, 23:22
PM MAIL   Вверх
Muerto
Дата 2.9.2010, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



patap, 
Извини но ты допустил ошибку, возможно не спициально... но не пойму зачем тебе здесь вообще переменная tomorrow если она равна userTime, зачем сравнивать userTime и tomorrow?

Все что ты здесь написал:
Код

 $userTime = strtotime('12:00'); 

  $currentTime = strtotime(date('H:i'));

  $tomorrow = strtotime('12:00');

  
  if ($userTime > $currentTime || ($currentTime > $userTime && $userTime >= $tomorrow)) {
    echo 'yep';
  } else {
    echo 'nope';
  }


Можно написать вот так:
Код

 $userTime = strtotime('12:00'); 
echo  ( $userTime >  strtotime(date('H:i')) )?'Сегодня':'Завтра';
  }

опять же, если мы считаем что 12:00 для нас сегодня, то стоит добавить >=

Добавлено @ 23:47
А вообще изначально как то как бараны уперлись в H:i , чем вам тупо time(); не нравиться ? ака timestamp?
Там все с точностью до секунды , и все конвертируется простым javascript на компе пользователя если нужно.
У формата времени так же есть и другие добавки вроде am/pm дата.

Вообще бред какой то.

Есть колесо а хотим что бы машина на квадратах ездила, и ломаем голову о том как бы это сделать

Один из вариантов:

Берём дату которая сегодня, сохраняем, и если хотим сравнивать прибавляем ей время, и конвертируем в timestamp путем strtotime



Это сообщение отредактировал(а) Muerto - 2.9.2010, 23:49


--------------------
user posted image
PM MAIL   Вверх
Dima85
Дата 3.9.2010, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Мне кажется мы не понимаем друг друга.
Ну неужели не у кого нету или не было настольного будильника с маленькой стрелочкой, которую сзади будильника крутишь и настраиваешь на нужное время, в которое он должен прозвенеть...
Точно такой же механизм нужен и здесь, с надписями: "Еще не звенел" "Уже прозвенел".
PM MAIL   Вверх
Muerto
Дата 3.9.2010, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Dima85, А по моему мы все здесь отлично поняли, осталось вам понять то что мы до вас хотим донести  smile 
Я тебе очень подробно исписал в самом конце как именно нужно определять звенел твой будильник или нет.
с timestamp Ошибок нету, осталось всего лишь перевести твой некому не нужный 12:00 в timestamp и начать сравнивать 

Это тебе не 1+1, если тупо брать  даты к примеру и сравнивать их что больше а что меньше, иногда дата которая раньше будет больше и наоборот, поэтому и нужна функция strtotime , и поэтому тебе что бы сравнивать твои часы, нужно тоже её пользоваться, а поскольку 12:00 в strtotime нифига тебе не даст, тебе нужно пресобачить к ней дату, и затем уже.

Почему?

А потому что timestamp Это отсчет от январся 1, 1970 года, а твое время оно хоть завтра хоть после завтра, хоть два дня назад.
На этом я пошел спать и закончил обсуждать эту тему... уже по кругу все идет и кто хотел уже все понял...

Это сообщение отредактировал(а) Muerto - 3.9.2010, 02:08


--------------------
user posted image
PM MAIL   Вверх
bars80080
Дата 3.9.2010, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Dima85 @  3.9.2010,  01:34 Найти цитируемый пост)
Точно такой же механизм нужен и здесь, с надписями: "Еще не звенел" "Уже прозвенел". 

это уже описали: http://forum.vingrad.ru/index.php?showtopi...t&p=2206559
что касается времени

что касается - звенел/не звенел, то в случае относительного времени (12:00) это делается только флагом, специально отмечаемым в момент прохождения этой точки. тут путь один - крон
в случае абсолютного времени (20100903120000 или таймстамп) то тут достаточно сравнить с текущим временем
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4791 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.