На вопрос был дан ответ с комментарием, и поэтому он всегда находится при поиске неотвеченных вопросов.
Вариант 2 из комментария Кевина в виде кода:
$beginDate=new DateTime();
$beginDate->setTime(0,30);
$mPeriod = new DatePeriod(
$beginDate,
DateInterval::createFromDateString('+1 minutes'),
90
);
$rndKey = random_int(0,90);
foreach($mPeriod as $key => $period){
if($key == $rndKey) {
echo $period->format('Y-m-d H:i');
}
}
Однако, если только требуется случайное время между 00:30 и 02:00, это быстрее и проще без DateInterval:
$rndTime = date_create('today 0:30')
->modify(random_int(0,90).' Minutes')
;
echo $rndTime->format('Y-m-d H:i');