在日历中导航时出现奇怪的日期
Weird dates when navigating in a 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
问题是您混淆了日历年和 ISO 8601 周数。
ISO 周通常跨越日历年边界,因此使用日历年会给你错误的答案,
您需要在 date()
调用中使用 'o'
而不是 'Y'
来确定 $year
这将为您提供与周数匹配的适当年份数
$year = date("o", $time);
我使用此代码在从星期一开始的每周日历上来回导航 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
问题是您混淆了日历年和 ISO 8601 周数。 ISO 周通常跨越日历年边界,因此使用日历年会给你错误的答案,
您需要在 date()
调用中使用 'o'
而不是 'Y'
来确定 $year
这将为您提供与周数匹配的适当年份数
$year = date("o", $time);