日历认为今天是的开始


Calendar think current day is the beginning of the

我一直在制作一个周视图日历,用户可以使用表单上的按钮前后移动一周。除了日历第一次打开时,如果是一周的开始,那么就是当前一天,所以其他日子都结束了。

以下是我迄今为止所拥有的。。。

if(isset($_POST['add_week'])){
     $last_week_ts = strtotime($_POST['last_week']);
     $display_week_ts = $last_week_ts + (3600 * 24 * 7);
} else if (isset($_POST['back_week'])) {
     $last_week_ts = strtotime($_POST['last_week']);
     $display_week_ts = $last_week_ts - (3600 * 24 * 7);
} else {
    $display_week_ts = floor(time() / (3600 * 24)) * 3600 * 24;
}
$week_start = date('d-m-Y', $display_week_ts);
for ($i = 0; $i < 7; $i++) {
    $current_day_ts = $display_week_ts + ($i * 3600 *24);
    echo date('d-m-Y', $current_day_ts); 
}

我知道问题出在哪里,线路

$display_week_ts = floor(time() / (3600 * 24)) * 3600 * 24;

它称为当天,但$week_start需要是一周的第一天,但我已经尝试了我能找到的一切。我试过

$display_week_ts = strtotime("Monday noon");

这似乎很有效,直到日记到达10月29日星期一,这时它似乎跳过了一天,将10月29号改为星期二。

我在这个网站上发现了另一个主题,它发现了本周的开始,但我一直无法成功地实现它们中的任何一个

我将非常感谢在这件事上的任何帮助,我已经做了三天了。。。

试试这个:

$display_week_ts = floor(time() / (3600 * 24)) * 3600 * 24; 
$dow = date("w", $display_week_ts);
$dow = ($dow + 6) % 7;
$display_week_ts -= $dow * 3600 * 24;
$monday = new DateTime(date("Y-m-d", $display_week_ts));

现在$monday包含当前星期一的日期。将此对象存储在会话中。当你需要转移到下周时,用找到下周一

$monday->modify('+1 week');

要查找上周一,请使用

$monday->modify('-1 week');

找到新的星期一后,将其存储回会话中。