Php 如何从DatePeriod中获得一个随机的DateTime?

Php 如何从DatePeriod中获得一个随机的DateTime?,php,datetime,Php,Datetime,我正在用以下代码创建一个DatePeriod: $beginDate=new DateTime(); $beginDate->setTime(0,30); $mPeriod = new DatePeriod( $beginDate, DateInterval::createFromDateString('+1 minutes'), 90 ); 我可以将每个对象打印到此期间,例如: foreach ($mPeriod as $period) { echo

我正在用以下代码创建一个
DatePeriod

$beginDate=new DateTime();
$beginDate->setTime(0,30);
$mPeriod = new DatePeriod(
    $beginDate, 
    DateInterval::createFromDateString('+1 minutes'), 
    90
);
我可以将每个对象打印到此期间,例如:

foreach ($mPeriod as $period) {
    echo $period->format('Y-m-d H:i') . PHP_EOL;
}

但我不知道如何才能将
DateTime
对象中的一个带入这个时段。我想随机使用这些值中的一个。

问题的答案带有注释,因此在搜索未回答的问题时总是可以找到

凯文评论中的变体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');

将它们放入数组中,然后使用返回的键获取数组,或者只需将一个
随机数从零初始化为总计数,如果随机数等于foreach
key-1
,则返回。