在日历中导航时的奇怪日期

时间:2015-01-07 12:17:32

标签: php date calendar

我使用此代码在星期一开始的每周日历上来回导航1周:

$date = $sysback->input->get("date", false);
$date = ($date) ? $date : date("Y-m-d");

$time = strtotime($date);
$year = date("Y", $time);
$week = date("W", $time);

$date_from = date("Y-m-d", strtotime($year."W".$week));
$date_to = date("Y-m-d", strtotime($year."W".$week." +6days"));

$date_prev = date("Y-m-d", strtotime($year."W".$week." -7days"));
$date_next = date("Y-m-d", strtotime($year."W".$week." +7days"));

但问题是,如果我从本周回到2014年,我会得到奇怪的日期:

  • 今日日期:2015-01-07
  • 1退步:2014-12-29
  • 2步返回:2013-12-23

1 个答案:

答案 0 :(得分:1)

问题是您正在混合日历年和ISO 8601周数。 ISO周通常跨越日历年边界,因此使用日历年将得到错误答案,

您需要在'o'来电中使用'Y'代替date()来确定$year 这将为您提供与周数匹配的适当年份数

$year = date("o", $time);