![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Tiarwe |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 24.8.2011 Репутация: нет Всего: нет |
Здравствуйте!
Вещь простая до ужаса, но голова чего-то совсем не варит. В общем суть такая: есть диапазон времени от и до. Например от 4:00 до 8:00. Требуется определить, находится ли текущее время в этом диапазоне. Всё просто a < time < b. Трудности возникают при параметрах, например, таких: от 22:00 до 3:00. Подскажите, пожалуйста. |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
ты строковые значения сравниваешь или время в миилисекундах, например? то есть, время с датой или просто время суток?
если время суток, то попадание в любой из интервалов 0:00-3:00 или 22:00-24:00 если реальное время, то смотришь по попаданию в один интервал, например от 22:00 18 августа до 03:00 19 августа (в миллисекундах). да и лучше задачи на время утром решать -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
vvms |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 7.10.2008 Репутация: нет Всего: 1 |
Для случая от 22:00 до 3:00 можно сделать просто: проверить, если "до" больше, чем "от", то разбить интервал на два от 22:00 до 23:59 и от 00:00 до 3:00. Потом проверить попадание хотя в один из них |
|||
|
||||
Tiarwe |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 24.8.2011 Репутация: нет Всего: нет |
akizelokro, время в миллисекундах. Временной промежуток - день.
vvms, надеялся что есть способ без разбивания... Ладно, буду пробовать так. Спасибо ![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Можно использовать время в сишном формате time_t
The value returned generally represents the number of seconds since 00:00 hours, Jan 1, 1970 UTC Т.е. можно просто сравнивать такие величины по больше меньше и не думать о границах. Правда не подойдет если нужна точность выше секунд. И еще время тут возвращается без учета часовых поясов. Т.е. исходные диапазоны тоже нужно приводить к гринвичу. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Тут сложного нет ничего Добавлено @ 15:15 Ну, просто надо брать исключающий диапазон и смотреть попадание в него. Если попадает, то результат true и в твой диапазон не попадает. Здесь накосячил сначала. Если попадает - true. Если не попадает - false Это сообщение отредактировал(а) akizelokro - 20.8.2013, 05:37 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |