|
|
|
| Возникла необходимость организовать такое вот дело:
Задается промежуток времени, например от 22:00 до 02:00, нужно сделать так, чтобы скрипт проверял текущее время например функцией date, и если текущее время попадает в этот промежуток - скрипт выдает "1", иначе "0". Собственно, проблема проверки именно тогда, когда этот промежуток захватывает конец одних суток, и начало других, как в данном примере. Логично, что промежуток не может быть больше 23 часов. Помогите разобраться, буду признателен, | |
|
|
|
|
|
|
|
для: Oberon
(15.12.2009 в 11:38)
| | А что разве можно только время узнать, дату разве нельзя? Да и способов проверки может быть не один. | |
|
|
|
|
|
|
|
для: sim5
(15.12.2009 в 11:41)
| | вот со способами проверки у меня дефицит. Я ни одного кроме ($start <= $x && $x < $end) как-то придумать не могу. | |
|
|
|
|
|
|
|
для: Trianon
(15.12.2009 в 11:43)
| | Я имею ввиду, в зависимости от представления времени. | |
|
|
|
|
|
|
|
для: sim5
(15.12.2009 в 11:52)
| | то есть представлений может быть не одно. А способ - один. | |
|
|
|
|
|
|
|
для: Trianon
(15.12.2009 в 12:01)
| | Ну естественно, кроме как больше/меньше.... ) | |
|
|
|
|
|
|
|
для: Oberon
(15.12.2009 в 11:38)
| | надо бы определиться, какой именно из хвостов (начало или конец) указан применительно к текущим суткам. | |
|
|
|
|
|
|
|
для: Trianon
(15.12.2009 в 11:41)
| | а тут по разному может быть в том то и дело. на примере промежутка 22:00-01:00, если сейчас 20:00 то первый хвост к текущим суткам, так как второй уже прошел, и попадает на следующие. если же сейчас 00:00 то 22:00 - это уже прошлые сутки в данном случае, пока не наступит например 02:00 ночи, тогда 22:00 опять перейдет на сегодняшний вечер.. Таким вот образом, | |
|
|
|
|
|
|
|
для: Oberon
(15.12.2009 в 11:58)
| | не понял логики. | |
|
|
|
|
|
|
|
для: Trianon
(15.12.2009 в 12:01)
| | Где именно?
в общем,
"если текущее время попадает в этот промежуток - скрипт выдает "1", иначе "0"
это вся логика. то есть, на примере промежутка 22:00-01:00 скрипт Каждые сутки с 22:00-24:00 и 00:00-01:00 должен давать "1". по другому как объяснить - незнаю, | |
|
|
|
|
|
|
|
для: Oberon
(15.12.2009 в 12:05)
| | >Где именно?
в пояснении (15.12.2009 в 11:58)
Я не понял, согласно каких формальных правил уточняется положение интервала на оси времени. | |
|
|
|
|
|
|
|
для: Oberon
(15.12.2009 в 12:05)
| | Промежутки указываются только часами или могут и минуты быть?
И вообще, каким образом просиходит прием данных?
Да, кстати, день ведь заканчивается в 23:59, следующий начинается в 00:00. Мне еще никогда никакие часы 24:00 не показывали, значит и ввод данных должен быть таким же.
Если ввод идет в формате xy:nm, x1y1:n1m1, то сравните первые две цифры от времени (т.е. xy и x1y1) и если x1y1 будет меньше xy, то это будет означать, что второе время пренадлежит следующему дню.
Вот теперь вы знаете, к какому дню относится второе время.
Используйте mktime (у вас дано все до секунд), и сравнивайте это с time(), так, как Trianon выше показал | |
|
|
|
|
|
|
|
для: neadekvat
(15.12.2009 в 12:17)
| | там проблема с тем, что интервал, пересекающий границу суток, неоднозначно определен. Он может быть соотнесен как с ночью до, так и с ночью после. А автор никак не может описать правило конкретизации. | |
|
|
|
|
|
|
|
для: Trianon
(15.12.2009 в 12:23)
| | Мне кажется логичным, что сначала должно идти более раннее время, затем - более позднее (имеется в виду именно относительно суток. То есть сначала 22:00 от 1 декабря, а уже потом 01:00 от 2 декабря) | |
|
|
|
|
|
|
|
для: 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
на совершенно равных основаниях. | |
|
|
|
|
|
|
|
для: Trianon
(15.12.2009 в 12:42)
| | Так я и говорю, что логично за начала брать время сегодняшней даты, но никак не вчерашней, как у вас. | |
|
|
|
|
|
|
|
для: neadekvat
(15.12.2009 в 13:35)
| | А у меня не так?
Хорошо, как у Вас ? | |
|
|
|
|
|
|
|
для: Trianon
(15.12.2009 в 14:04)
| | Я уже раза три сказал, как у меня. И, кстати, вы пытаетесь мне объяснить то, что я и так понимаю и говорю. | |
|
|
|
|
|
|
|
для: neadekvat
(15.12.2009 в 15:59)
| | В общем, я так понял, кроме субъективного предпочтения связывать с текущими сутками именно начало интервала, других доводов нет.
У меня присутствовал в том числе и такой вариант. Не следовало писать, что у меня не так. | |
|
|
|
|
|
|
|
для: 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
Я не сказал, что он не верен. Я сказал, что по моему мнению, использовать его нелогично. | |
|
|
|
|
|
|
|
для: 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, учитывая переходы между сутками, | |
|
|
|
|
|
|
|
для: Oberon
(15.12.2009 в 16:09)
| | То есть на каждое сочетание интервала и даты Вам нужны два ответа?
Или у Вас не будет интервалов, пересекающих границы суток? | |
|
|
|