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

Форум PHP

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

 

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

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

тема: Помогите организовать скрипт для проверки промежутка времени,
 
 автор: Oberon   (15.12.2009 в 11:38)   письмо автору
 
 

Возникла необходимость организовать такое вот дело:
Задается промежуток времени, например от 22:00 до 02:00, нужно сделать так, чтобы скрипт проверял текущее время например функцией date, и если текущее время попадает в этот промежуток - скрипт выдает "1", иначе "0". Собственно, проблема проверки именно тогда, когда этот промежуток захватывает конец одних суток, и начало других, как в данном примере. Логично, что промежуток не может быть больше 23 часов. Помогите разобраться, буду признателен,

  Ответить  
 
 автор: sim5   (15.12.2009 в 11:41)   письмо автору
 
   для: Oberon   (15.12.2009 в 11:38)
 

А что разве можно только время узнать, дату разве нельзя? Да и способов проверки может быть не один.

  Ответить  
 
 автор: Trianon   (15.12.2009 в 11:43)   письмо автору
 
   для: sim5   (15.12.2009 в 11:41)
 

вот со способами проверки у меня дефицит. Я ни одного кроме ($start <= $x && $x < $end) как-то придумать не могу.

  Ответить  
 
 автор: sim5   (15.12.2009 в 11:52)   письмо автору
 
   для: Trianon   (15.12.2009 в 11:43)
 

Я имею ввиду, в зависимости от представления времени.

  Ответить  
 
 автор: Trianon   (15.12.2009 в 12:01)   письмо автору
 
   для: sim5   (15.12.2009 в 11:52)
 

то есть представлений может быть не одно. А способ - один.

  Ответить  
 
 автор: sim5   (15.12.2009 в 13:26)   письмо автору
 
   для: Trianon   (15.12.2009 в 12:01)
 

Ну естественно, кроме как больше/меньше.... )

  Ответить  
 
 автор: Trianon   (15.12.2009 в 11:41)   письмо автору
 
   для: Oberon   (15.12.2009 в 11:38)
 

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

  Ответить  
 
 автор: Oberon   (15.12.2009 в 11:58)   письмо автору
 
   для: Trianon   (15.12.2009 в 11:41)
 

а тут по разному может быть в том то и дело. на примере промежутка 22:00-01:00, если сейчас 20:00 то первый хвост к текущим суткам, так как второй уже прошел, и попадает на следующие. если же сейчас 00:00 то 22:00 - это уже прошлые сутки в данном случае, пока не наступит например 02:00 ночи, тогда 22:00 опять перейдет на сегодняшний вечер.. Таким вот образом,

  Ответить  
 
 автор: Trianon   (15.12.2009 в 12:01)   письмо автору
 
   для: Oberon   (15.12.2009 в 11:58)
 

не понял логики.

  Ответить  
 
 автор: Oberon   (15.12.2009 в 12:05)   письмо автору
 
   для: Trianon   (15.12.2009 в 12:01)
 

Где именно?
в общем,
"если текущее время попадает в этот промежуток - скрипт выдает "1", иначе "0"
это вся логика. то есть, на примере промежутка 22:00-01:00 скрипт Каждые сутки с 22:00-24:00 и 00:00-01:00 должен давать "1". по другому как объяснить - незнаю,

  Ответить  
 
 автор: Trianon   (15.12.2009 в 12:14)   письмо автору
 
   для: Oberon   (15.12.2009 в 12:05)
 

>Где именно?

в пояснении (15.12.2009 в 11:58)

Я не понял, согласно каких формальных правил уточняется положение интервала на оси времени.

  Ответить  
 
 автор: neadekvat   (15.12.2009 в 12:17)   письмо автору
 
   для: Oberon   (15.12.2009 в 12:05)
 

Промежутки указываются только часами или могут и минуты быть?
И вообще, каким образом просиходит прием данных?
Да, кстати, день ведь заканчивается в 23:59, следующий начинается в 00:00. Мне еще никогда никакие часы 24:00 не показывали, значит и ввод данных должен быть таким же.
Если ввод идет в формате xy:nm, x1y1:n1m1, то сравните первые две цифры от времени (т.е. xy и x1y1) и если x1y1 будет меньше xy, то это будет означать, что второе время пренадлежит следующему дню.
Вот теперь вы знаете, к какому дню относится второе время.
Используйте mktime (у вас дано все до секунд), и сравнивайте это с time(), так, как Trianon выше показал

  Ответить  
 
 автор: Trianon   (15.12.2009 в 12:23)   письмо автору
 
   для: neadekvat   (15.12.2009 в 12:17)
 

там проблема с тем, что интервал, пересекающий границу суток, неоднозначно определен. Он может быть соотнесен как с ночью до, так и с ночью после. А автор никак не может описать правило конкретизации.

  Ответить  
 
 автор: neadekvat   (15.12.2009 в 12:37)   письмо автору
 
   для: Trianon   (15.12.2009 в 12:23)
 

Мне кажется логичным, что сначала должно идти более раннее время, затем - более позднее (имеется в виду именно относительно суток. То есть сначала 22:00 от 1 декабря, а уже потом 01:00 от 2 декабря)

  Ответить  
 
 автор: Trianon   (15.12.2009 в 12:42)   письмо автору
 
   для: neadekvat   (15.12.2009 в 12:37)
 

Следите за руками. Никаких фокусов.
Интервал 22:00...02:00 .
Применительно к сегодняшней дате 2009-12-15.
Может быть уточнен как 2009-12-14 22:00:00 ... 2009-12-15 02:00:00
и
Может быть уточнен как 2009-12-15 22:00:00 ... 2009-12-16 02:00:00
на совершенно равных основаниях.

  Ответить  
 
 автор: neadekvat   (15.12.2009 в 13:35)   письмо автору
 
   для: Trianon   (15.12.2009 в 12:42)
 

Так я и говорю, что логично за начала брать время сегодняшней даты, но никак не вчерашней, как у вас.

  Ответить  
 
 автор: Trianon   (15.12.2009 в 14:04)   письмо автору
 
   для: neadekvat   (15.12.2009 в 13:35)
 

А у меня не так?

Хорошо, как у Вас ?

  Ответить  
 
 автор: neadekvat   (15.12.2009 в 15:59)   письмо автору
 
   для: Trianon   (15.12.2009 в 14:04)
 

Я уже раза три сказал, как у меня. И, кстати, вы пытаетесь мне объяснить то, что я и так понимаю и говорю.

  Ответить  
 
 автор: Trianon   (15.12.2009 в 16:05)   письмо автору
 
   для: neadekvat   (15.12.2009 в 15:59)
 

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

У меня присутствовал в том числе и такой вариант. Не следовало писать, что у меня не так.

  Ответить  
 
 автор: neadekvat   (15.12.2009 в 16:08)   письмо автору
 
   для: Trianon   (15.12.2009 в 16:05)
 

Может быть уточнен как 2009-12-14 22:00:00 ... 2009-12-15 02:00:00 
и 
Может быть уточнен как 2009-12-15 22:00:00 ... 2009-12-16 02:00:00

Вот об этом я сказал, что логично использовать этот вариант:
2009-12-15 22:00:00 ... 2009-12-16 02:00:00
А не этот
2009-12-14 22:00:00 ... 2009-12-15 02:00:00
Я не сказал, что он не верен. Я сказал, что по моему мнению, использовать его нелогично.

  Ответить  
 
 автор: Oberon   (15.12.2009 в 16:09)   письмо автору
 
   для: Trianon   (15.12.2009 в 12:42)
 

(..)
Может быть уточнен как 2009-12-14 22:00:00 ... 2009-12-15 02:00:00
и
Может быть уточнен как 2009-12-15 22:00:00 ... 2009-12-16 02:00:00
(..)

Собственно, я так и говорил, и правильный будет и первый и второй вариант, потому как от даты никак не зависит интервал, он будет прходить каждые сутки, в данном случае, каждую ночь, в данном случае, каждые сутки интервал времени будет 00:00...02:00 и 22:00...23:59

Проблема как это все правильно организовать в php, учитывая переходы между сутками,

  Ответить  
 
 автор: Trianon   (15.12.2009 в 18:04)   письмо автору
 
   для: Oberon   (15.12.2009 в 16:09)
 

То есть на каждое сочетание интервала и даты Вам нужны два ответа?
Или у Вас не будет интервалов, пересекающих границы суток?

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

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