Найти каждый [1-й, 2-й, 3-й] день недели, используя углерод В течение следующих 15 дней - PullRequest
0 голосов
/ 14 октября 2019

Найдите дату недели в каждый [1-й, 2-й, 3-й] день, используя carbon В течение следующих 15 дней.

Существует ли какой-либо метод, аналогичный momentjs в углероде

Ниже демонстрациитот же пример, используя momentjs.

momementObj.recur().every([1, 2, 3, 4, 5]).daysOfWeek();

Ответы [ 2 ]

1 голос
/ 14 октября 2019

Я не думаю, что у Carbon есть это из коробки, но с такими замечательными инструментами вы можете использовать CarbonPeriod для достижения этой цели, см .: https://carbon.nesbot.com/docs/#api-period. Вы можете получить что-то подобное:

use Carbon\CarbonPeriod;
...

function dateInRange(array $days_of_week = [1,2,3], int $in_days = 15)
{
    $days = CarbonPeriod::create(Carbon::now(), Carbon::now()->addDay($in_days));

    $result = [];
    /**
     * @var Carbon $carbon
     */
    foreach ($days as $carbon) { //This is an iterator
        if (in_array($carbon->dayOfWeek, $days_of_week, true)) {
            $result[] = $carbon->format('Y-m-d D');
        }
    }

    return $result;
}
  • $days дает вам углеродный период, который является Iterator
  • Позволяет перебирать каждый «период» между двумя датами
  • Затем вы выполняете проверку при их повторении при заполнении исходного массива
  • Вы можете просто вернуть $carbon в качестве экземпляра Carbon внутри цикла вместо его форматирования (я просто сделал это для демонстрации того, что он возвращает деньнедели)

PS: по умолчанию 0 - углерод, 1 - понедельник ... и т. д.

1 голос
/ 14 октября 2019

Я думаю, вам нужна эта часть документации: https://carbon.nesbot.com/docs/#api-week

Так, например, в течение одной недели:

$en = CarbonImmutable::parse('2017-02-05');
var_dump($en->week(1)->format('Y-m-d H:i')); //string(16) "2017-01-01 00:00"
var_dump($en->week(6)->format('Y-m-d H:i')); //string(16) "2017-01-06 00:00"

проверьте документацию ясно, пожалуйста, если вам нужны дополнительные разъясненияпросто комментарий.

Дни недели идут от 0 до 6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...