Russian Qt Forum
Ноябрь 24, 2024, 06:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Случайное значение даты (и времени)  (Прочитано 5230 раз)
alex_beginner
Гость
« : Январь 11, 2012, 06:20 »

Имеется начальная и конечная дата (ну, допустим с 01.01.2012 по 10.01.2012).
И имеется интервал времени суток (скажем, с 09:00:00 по 18:00:00).

Требуется найти случайную дату/время, так чтобы дата попадала в интервал дат, а время - в интервал времени. Ну т.е например 05.01.2012 13:03:36

Как бы это попроще сделать? Что тут есть за генератор случайных чисел, как его проще сюда прикрутить, и как потом склеить дату с временем?
Записан
Blackwanderer
Гость
« Ответ #1 : Январь 11, 2012, 06:49 »

Генерируйте отдельно случайное значение для годов, месяцев, дней, часов, минут, секунд так чтобы каждое число попадало в соответствующий диапазон, а потом собирайте их в дату/время.
Записан
alex_beginner
Гость
« Ответ #2 : Январь 11, 2012, 07:11 »

Не, так не годится. Например, будут даты 28.01.2012 и 05.02.2012.  Если генерить отдельно день между 5 и 28, то он будет, например, 16. Но 16-е число не расположено между этими датами.
Тут как-то надо видно находить разницу в днях, что ли, потом искать случайный день, а потом прибавлять его к начальной дате. Но вот хотел посоветоваться, как это бы попроще. И как вообще вызывается генератор случайных чисел?
Записан
innovator_king
Гость
« Ответ #3 : Январь 11, 2012, 08:04 »

Уж куда проще-то, что предложили? Разницу в днях и миллисекундах и прибавлять к начальному значению. А случайные числа от n до x сделать просто.
Записан
Bepec
Гость
« Ответ #4 : Январь 11, 2012, 08:20 »

Ручками вычислить необходимый диапазон - дело минут, если есть желание.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Январь 11, 2012, 12:51 »

Не проверял но полагаю так:

- перевести даты в "дни" (toJulianDay)
- сгенерировать случайное день между 2 днями
- перевести этот день в дату (fromJulianDay)
Записан
_OLEGator_
Гость
« Ответ #6 : Январь 11, 2012, 13:35 »

Код
C++ (Qt)
int QDateTime::daysTo ( const QDateTime & other ) const
uint QDateTime::toTime_t () const

Можно использовать и генерировать дату и время отдельно, в полученном интервале.
Записан
alex_beginner
Гость
« Ответ #7 : Январь 11, 2012, 14:57 »

Спасибо всем, действительно всё оказалось очень просто. Я и вопрос-то задал только потому, что не думал, что здесь есть такие продвинутые QDate и QTime. Просто для лентяев (типа меня). Пожалуй, даже всё проще, чем в C#. Ну а qrand() - он как обычно...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.264 секунд. Запросов: 23.