【问题标题】:Need to substitute string in the date function using PHP需要使用 PHP 替换日期函数中的字符串
【发布时间】:2018-12-10 03:53:31
【问题描述】:

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

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..`.

如何替换该日期函数中的字符串。

请帮我解决这个问题。

【问题讨论】:

  • 使用DateTime::setISODate(year, week) 函数获取年份和星期的日期,然后您可以使用DateTime::add() 函数继续添加星期。
  • 如果我尝试使用此函数为字符串添加一周 $date = '201848'; for($b=0; $b
  • 你可以拆分年份和星期然后使用上面提供的功能来实现你想要的。
  • 看看下面我的回答。

标签: php database date for-loop


【解决方案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..

【讨论】:

  • 这是完美的工作,但如果你注意到它的输出,它会在 201852 之后显示 201801 。应该是 201901。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 2021-04-11
相关资源
最近更新 更多