Laravel中使用Carbon生成今日至30天前的随机完整日期时间问题
Laravel中使用Carbon生成今日至30天前的随机日期时间
你当前的代码仅随机了日期部分,时间始终保留当前值,要同时随机时间可以用以下两种实用方式:
方法一:先随机日期,再设置随机时分秒
先确定0到30天前的随机日期,再手动设置随机的时、分、秒:
$randomDays = rand(0, 30); $randomDateTime = Carbon::now()->subDays($randomDays) ->setTime(rand(0, 23), rand(0, 59), rand(0, 59));
方法二:直接在时间区间内生成随机时间
定义时间范围的起始和结束点,通过随机时间戳生成完整的随机日期时间,这种方式的随机结果覆盖整个时间区间,分布更均匀:
$startTime = Carbon::now()->subDays(30); $endTime = Carbon::now(); $randomDateTime = Carbon::createFromTimestamp(rand($startTime->getTimestamp(), $endTime->getTimestamp()));
生成的$randomDateTime直接输出就会是你需要的YYYY-MM-DD HH:MM:SS格式,也可以手动调用format方法明确指定格式:
echo $randomDateTime->format('Y-m-d H:i:s');
内容的提问来源于stack exchange,提问作者Wuryantono
相关产品推荐
相关产品推荐

