需要使用PHP在date函数中替换字符串

时间:2018-12-10 03:53:31

标签: php database date for-loop

我有一个循环,如下所示将当前一周增加一周:

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 :(得分:1)

在这里,我们将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,   201904、201905、201906、201907、201908、201909 ..