Php 向随机生成的日期列表添加时间
下面我试图生成一组日期,这些日期符合1990年以来星期日、星期一和星期四的标准。根据这些日期,我想为每个创建的事件添加一个晚上7点的时间。碳包装有可能吗Php 向随机生成的日期列表添加时间,php,laravel,php-carbon,Php,Laravel,Php Carbon,下面我试图生成一组日期,这些日期符合1990年以来星期日、星期一和星期四的标准。根据这些日期,我想为每个创建的事件添加一个晚上7点的时间。碳包装有可能吗 public function run() { $start = Carbon::parse('First Monday of January 1990'); $nextMonth = Carbon::now()->addMonth(); collect([ 'monday' => fals
public function run()
{
$start = Carbon::parse('First Monday of January 1990');
$nextMonth = Carbon::now()->addMonth();
collect([
'monday' => false,
'thursday' => false,
'sunday' => true
])->flatMap(function ($bool, $day) use ($start, $nextMonth) {
return $this->dates($start, $nextMonth, $day, $bool);
})->sort(function ($a, $b) {
return strtotime($a) - strtotime($b);
})->values()->map(function ($date, $key) {
return factory(Event::class)->create([
'name' => 'Event '.($key + 1),
'slug' => 'event'.($key + 1),
'venue_id' => Venue::inRandomOrder()->first()->id,
'date' => $date
]);
})->filter(function ($event) {
return $event->date->lte(Carbon::today()->addWeeks(2));
});
}
protected function dates(Carbon $from, Carbon $to, $day, $last = false)
{
$step = $from->copy()->startOfMonth();
$modification = sprintf($last ? 'last %s of next month' : 'next %s', $day);
$dates = [];
while ($step->modify($modification)->lte($to)) {
$dates[$step->timestamp] = $step->copy();
}
return $dates;
}
要增加晚上7点的时间,您可以使用碳设定器方法
$date->hour=19
。请参见我是在dates方法内部还是在我的播种机的run方法中运行的某个收集方法内部应用该方法?这取决于您何时需要它,但在工厂中使用它会将其保存到DB。