假设我有$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;
}
是否有完成,更好的解决方案或内置功能?
答案 0 :(得分:0)
最后我找到了解决方案。
public function nextweek($year, $week)
{
$date = new DateTime;
$date->setISODate($year, ++$week);
if (!($date->format('W') == $week))
{
$week = '01';
++$year;
}
return $year.'/'.$week;
}
答案 1 :(得分: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
。