| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Временной промежуток. |
| Автор: Tiarwe 18.8.2013, 22:04 |
| Здравствуйте! Вещь простая до ужаса, но голова чего-то совсем не варит. В общем суть такая: есть диапазон времени от и до. Например от 4:00 до 8:00. Требуется определить, находится ли текущее время в этом диапазоне. Всё просто a < time < b. Трудности возникают при параметрах, например, таких: от 22:00 до 3:00. Подскажите, пожалуйста. |
| Автор: akizelokro 18.8.2013, 22:35 |
| ты строковые значения сравниваешь или время в миилисекундах, например? то есть, время с датой или просто время суток? если время суток, то попадание в любой из интервалов 0:00-3:00 или 22:00-24:00 если реальное время, то смотришь по попаданию в один интервал, например от 22:00 18 августа до 03:00 19 августа (в миллисекундах). да и лучше задачи на время утром решать |
| Автор: vvms 19.8.2013, 03:35 | ||
Для случая от 22:00 до 3:00 можно сделать просто: проверить, если "до" больше, чем "от", то разбить интервал на два от 22:00 до 23:59 и от 00:00 до 3:00. Потом проверить попадание хотя в один из них |
| Автор: Tiarwe 19.8.2013, 10:36 |
| akizelokro, время в миллисекундах. Временной промежуток - день. vvms, надеялся что есть способ без разбивания... Ладно, буду пробовать так. Спасибо |
| Автор: Alexeis 19.8.2013, 10:57 | ||
Можно использовать время в сишном формате time_t
The value returned generally represents the number of seconds since 00:00 hours, Jan 1, 1970 UTC Т.е. можно просто сравнивать такие величины по больше меньше и не думать о границах. Правда не подойдет если нужна точность выше секунд. И еще время тут возвращается без учета часовых поясов. Т.е. исходные диапазоны тоже нужно приводить к гринвичу. |
| Автор: akizelokro 19.8.2013, 15:03 | ||
Тут сложного нет ничего Добавлено @ 15:15 Ну, просто надо брать исключающий диапазон и смотреть попадание в него. Если попадает, то результат true и в твой диапазон не попадает. Здесь накосячил сначала. Если попадает - true. Если не попадает - false |