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');
将它们放入数组中,然后使用返回的键获取数组,或者只需将一个
随机数从零初始化为总计数,如果随机数等于foreachkey-1
,则返回。