我有这个日历,当前日期突出显示。我想强调前一周,今天是2015年3月30日所以突出显示的日期将是23到29.如果我从第一列(星期一)选择日期,但是当我点击时失败,脚本工作正常让我们说26,我得到的日期是19到25而不是16到22.任何想法?
if(isset($_GET['day'])) {
for ($i = -7; $i < 0; $i++) {
print date('Y-m-d', strtotime(str_replace('-','/', $_GET['day'])) + $i * 86400) . "<br />";
}
}
这是日历
答案 0 :(得分:1)
if(isset($_GET['day'])) {
$shift = (intval(date('w', strtotime($_GET['day']))) - 1)%7;
// Numeric representation of the day of the week, 0 for sunday -> need to sub 1 day
for ($i = -7; $i < 0; $i++) {
print date('Y-m-d', strtotime(str_replace('-','/', $_GET['day'])) + ($i - $shift) * 86400) . "<br />";
}
}
它适用于您的情况。 基本思想是获取星期几(星期日=> 0)的数字表示,并从当前日期中减去它们。
答案 1 :(得分:1)
我想出你所关注的那周的第一个星期一,然后从那里输出日期。您的脚本目前不会考虑您在一周中的哪个位置只输出前7天。
if(!empty($_GET['day'])){
$int = strtotime($_GET['day']);
$firstmonday = strtotime('monday last week', $int);
for($i = 0; $i < 7; $i++) {
echo date('Y-m-d', $firstmonday + (86400 * $i)) . "<br />";
}
}
由于星期日是特殊情况,我们可以检查请求的日期是否为一。
if(!empty($_GET['day'])){
$int = strtotime($_GET['day']);
$interval = (date('N', $int) == 7) ? '-2 week' : '-1 week';
$firstmonday = strtotime($interval, $int);
for($i = 1; $i < 8; $i++) {
echo date('Y-m-d', $firstmonday + (86400 * $i)) . "<br />";
}
}