Php碳:每周一和周二,每两周
我可以每周一和周二都去,但每周都去 我怎样才能每两周去一次Php碳:每周一和周二,每两周,php,php-carbon,Php,Php Carbon,我可以每周一和周二都去,但每周都去 我怎样才能每两周去一次 $days = [1,2]; $filterDayOfWeek = function ($date) use ($days) { return in_array($date->dayOfWeekIso, $days, true); }; $period = Carbon::parse($this->entry_start->toDateString())->daysUntil(
$days = [1,2];
$filterDayOfWeek = function ($date) use ($days) {
return in_array($date->dayOfWeekIso, $days, true);
};
$period = Carbon::parse($this->entry_start->toDateString())->daysUntil(
$this->periodicity_end->toDateString()
);
$period->addFilter($filterDayOfWeek);
我在文件中看到:
$interval = \Carbon\CarbonInterval::weeks(2);
但我不知道如何申请我的护照
谢谢你每两周,你首先要确定如何过滤奇数/偶数或从一开始 CarbonInterval::weeks2只能在嵌套迭代时使用:1循环2周,然后循环几天:
$days = ['Monday', 'Tuesday'];
foreach (CarbonPeriod::create($start, CarbonInterval::weeks(2), $end, CarbonPeriod::IMMUTABLE) as $baseDate) {
foreach ($days as $dayName) {
$date = $baseDate->is($dayName) ? $baseDate : $baseDate->next($dayName);
echo $date;
}
}
请看我的评论,如果你能给出更精确的答案。我可以在回答中考虑到这一点。这是我的解决方案
function forEveryWeek(Periodicity $periodicity): CarbonPeriod
{
/**
* monday, tuesday, wednesday
* @example : [1,2,3]
*/
$days = $periodicity->getDays();
/**
* @example 1 for every weeks, 2 every 2 weeks, 3,4...
*/
$repeat_week = $periodicity->getRepeatWeek();
/**
* filter days of the week
* @param $date
* @return bool
*/
$filterDayOfWeek = function ($date) use ($days) {
return in_array($date->dayOfWeekIso, $days, true);
};
/**
* Carbon::class
* $this->entry_start
* $this->periodicity_end
*/
$period = Carbon::parse($this->entry_start->toDateString())->daysUntil(
$this->periodicity_end->toDateString()
);
/**
* filter every x weeks
* @param $date
* @return bool
*/
$filterWeek = function ($date) use($repeat_week) {
return $date->weekOfYear % $repeat_week === 0;
};
$period->excludeStartDate();
$period->addFilter($filterDayOfWeek);
if ($repeat_week > 1) {
$period->addFilter($filterWeek);
}
return $period;
}
我认为休息一下对这里没有帮助。相反,看看一年中的周数是否可以被2整除。是的,我考虑过,但在我的应用程序中,它可以是每3、4、5周一次……你可以使用相同的逻辑,只需更改模数$date->weekOfYear%4==0我们需要精确性:例如,如果条目开始时间是星期二,则跳过的周是在星期一和星期二之间,还是在一起。什么可以包含开始日期以及如何确定第一个日期?什么可以包含$days?请给出一些例子,这样我们就可以为您提供适合您的用例的解决方案。问题:既然$this->entry\u start->toDateString已经是一个Carbon实例,为什么要解析$this->entry\u start->toDateString?这很出色,正是我所需要的。非常感谢。我确实将句点从解析改为循环,但两者都可以正常工作。