我有一个循环,如下所示将当前一周增加一周:
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..`.
如何在该日期函数中替换字符串。
请帮助我解决这个问题。
答案 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 ..