Необходимо заменить строку в функции даты с помощью PHP - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть цикл, который добавляет одну неделю к текущей неделе следующим образом:

for($b=0; $b < 27; $b++)
{
    $header_week = date('YW',strtotime('+'.$b.' week'));
}

Этот результат цикла будет,

O/P : 201850,201851,201852,201901,201902,201903,....,201924.

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

$date = '201848';
for($b=0; $b < 27; $b++)
{
   $date1 = date('YW', strtotime('+'.$b.' week', $date));
}

O/P : 197001,197002,197003,etc....

, но мне нужен вывод, например,

O/P : 201848,201849,201850,201851,201852,201901,etc..`.

Как подставить строку в эту датуфункция.

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 10 декабря 2018

Здесь мы разбиваем строку YearWeek на $year и $week, а затем создаем новый объект DateTime.Чтобы получить текущую неделю данного года, мы используем функцию setISODate, а затем просто запускаем цикл, необходимый для продолжения добавления недели согласно вашему требованию.

$db_date = "201848";
$year = substr($db_date, 0, 4);
$week = substr($db_date, 4);

$dateFromStr = new DateTime();
$dateFromStr->setISODate($year, $week);

if($dateFromStr) {
  for($b=0; $b < 27; $b++)
  {
    $calc_date = clone $dateFromStr;
    $calc_date->add(new DateInterval("P" . $b . "W"));
    $date1 = $calc_date->format("YW");
  }   
}

Вывод:

201848, 201849, 201850, 201851, 201852, 201801, 201902, 201903, 201903, 201905, 201906, 201907, 201908, 201909 ..

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