Как получить ближайшую дату по дню недели? - PullRequest
0 голосов
/ 25 сентября 2018

У меня рабочие дни с 1 по 7 (с понедельника по воскресенье).

Я хочу получить следующую дату, где днем ​​является указанный день (от 1 до 7).

Например, сегодня 25.09.2018.

Когда я сдаю 5 (пятница), я хочу получить 28.09.2018, что является следующей ближайшей пятницей.

Как мне этого добиться?Заранее спасибо!

Ответы [ 6 ]

0 голосов
/ 25 сентября 2018

Вот пользовательская универсальная функция, которую вы можете использовать где угодно,

function getNextDate($date, $number)
{
    $numericDay = (($number - 1) <= 0 ? 0 : $number - 1);
    $day        = jddayofweek($numericDay, 1);
    echo date('d.m.Y', strtotime("next " . $day . "", strtotime($date)));
}
getNextDate("25.09.2018", 5);

Эту функцию вы также можете использовать как универсальную функцию.

Вы получите ясное представление о jddayofweek .

Я передал 1 как строку возврата, содержащую день недели (англо-григорианский).

Я вычел 1 как понедельник, который по умолчанию считается первым индексом.

0 голосов
/ 25 сентября 2018

См. strtotime ()

`strtotime('next tuesday');`

Вероятно, вы можете узнать, используя strtotime:

echo date("jS F, Y", strtotime('next friday'));

0 голосов
/ 25 сентября 2018

с strtotime вы можете получить следующую пятницу таким образом strtotime('next friday')

, поэтому в PHP может работать что-то подобное:

date('d.m.Y', strtotime("next friday"))
0 голосов
/ 25 сентября 2018
  • Найти номер дня недели для указанной даты
  • Подсчитать количество дней, которые нужно добавить.Во-первых, найдите количество дней для достижения выходных (7 - номер дня текущей недели).Затем добавьте данный ввод.
  • Используйте функции date и strtotime, чтобы получить результирующую дату.

Попробуйте выполнить следующее (пояснение в комментариях к коду):

// Get weekday number for current date (or, you can use any other given date)
$start_date = time();
$weekday = (int)date('w', $start_date);

// assuming $input eg: 5 (Friday)
// calculating the differential we need to add 
$diff = (7 - $weekday) + $input;

$new_date = date(strtotime($start_date . "+" . $diff . " day"));
0 голосов
/ 25 сентября 2018

без использования углерода

$date = new \DateTimeImmutable();

$nextFriday = $date->sub(new \DateInterval("P".$date->format("w")."D"))->add(new \DateInterval("P5D"));
0 голосов
/ 25 сентября 2018

Пример для пятницы (5)

Carbon::now()
    ->next(5)
    ->toDateString();

Подробнее о библиотеке углерода

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