繁体   English   中英

如何找出下一个ISO 8601周?

[英]How to find out next ISO 8601 week?

可以说我有$year$week变量,它们包含一个星期的ISO 8601表示形式。 我想计算前几周和下几周。 在一年中的大部分时间里这是一件容易的事,因为我只需要增加或减少$week变量,但是在两年的边界内,我需要检查是否开始新的一年。

我创建了这样的东西:

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

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

终于我找到了解决方案。

public function nextweek($year, $week)
{
   $date = new DateTime;
   $date->setISODate($year, ++$week);
   if (!($date->format('W') == $week))
   {
      $week = '01';
      ++$year;
   }
   return $year.'/'.$week;
}

或对于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)有问题。for nextweek(2013, 52) 2013,52 nextweek(2013, 52)打印2013/01 还没有发现错误。所以最好坚持使用DateTime

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM