php - 如何从 DatePeriod 中获取一个随机的 DateTime?
问题描述
我正在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');
推荐阅读
- spring-mvc - 如何设置 Spring MVC 默认字符集
- r - 计算特定时间段内的发生次数
- html - 是否可以更改css中的元标记
- typescript - 打字稿生成器:SyntaxError:意外的严格模式保留字
- java - Android内部重用属性
用不同的名字 - r - 我想使用 R 匹配基于任意地址字段的两个数据集
- c# - 使用 React 和 Entity Framework Core 5 Web API 的 CORS 问题
- html - 在 VS Code 中禁用 HTML 中的注释和元素标记之间的自动换行符
- visual-studio-code - 是否可以自动更新 VsCode/PyCharm 机器人框架中资源文件的导入
- java - JPA 和 Spring Boot:来自 DB (H2) 的整数未按预期映射到布尔值