我们经常会遇到某项工作需要以一个固定的频率重复,比如:周、月、季度。
季度
$one = [];
$year = Carbon::now()->format('Y');
$plan_start = Carbon::parse("{$year}-1-1 08:00:00");
$plan_end = Carbon::parse("{$year}-3-1 18:00:00");
$season = ['一', '二', '三', '四'];
for ($i = 0; $i < 4; $i++) {
$one['work_name'] = "{$year}年{$season[$i]}季度";
$one['plan_start_at'] = $plan_start->format('Y-m-d 08:00:00');
$one['plan_finish_at'] = $plan_end->endOfMonth()->format('Y-m-d 18:00:00');
WorkTask::create($one);
$plan_start->addMonths(3);
$plan_end->subDay()->addMonths(3);
}
月度
$one = [];
$year = Carbon::now()->format('Y');
$plan_start = Carbon::parse("{$year}-1-1 08:00:00");
$plan_end = Carbon::parse("{$year}-1-1 18:00:00");
for ($i = 1; $i <= 12; $i++) {
$one['work_name'] = "{$year}年{$i}月";
$one['plan_start_at'] = $plan_start->format('Y-m-d 08:00:00');
$one['plan_finish_at'] = $plan_end->endOfMonth()->format('Y-m-d 18:00:00');
WorkTask::create($one);
$plan_start->addMonth();
$plan_end->subDays(3)->addMonth();
}
周
$now = Carbon::now();
$sum = $now->isoWeeksInYear();
for ($i = 1; $i <= $sum; $i++) {
$one['work_name'] = "{$year}年第{$i}周";
$now->setISODate($year, $i);
$one['plan_start_at'] = $now->startOfWeek()->format('Y-m-d 08:00:00');
$one['plan_finish_at'] = $now->endOfWeek()->format('Y-m-d 18:00:00');
WorkTask::create($one);
}