0

假设我有一个包含一周的 ISO 8601 表示的变量$year$week我想计算前几周和下几周。在一年中的大部分时间里,这是一项简单的任务,因为我只需要增加或减少$week变量,但在两年的边界内,我需要检查我们是否开始了新的一年。

我创造了这样的东西:

public function nextweek($year, $week)
{
   $maxweek = 0;//@TODO
   if ($week + 1 == $maxweek)
   {
      $year++;
      $week = 1;
   }
   else
   {
      $week++;
   }
   $nextweek = $year.'/'.$week;
   return $nextweek;
}

是否有完成,更好的解决方案或内置功能?

4

2 回答 2

0

最后我找到了解决方案。

public function nextweek($year, $week)
{
   $date = new DateTime;
   $date->setISODate($year, ++$week);
   if (!($date->format('W') == $week))
   {
      $week = '01';
      ++$year;
   }
   return $year.'/'.$week;
}
于 2013-07-18T16:53:07.847 回答
0

或者对于 PHP < 5.2

function nextweek($year, $week) {
    $nextWeek = strtotime($year.'W'.sprintf("%02d", $week)) + (7 * 24 * 60 * 60);
    return date('Y/W', $nextWeek);
}

年份包装有问题..nextweek(2013, 52)因为它会打印2013/01。还没有发现错误..所以最好坚持DateTime

于 2013-07-18T16:56:44.107 回答