日历认为当前日是开始的

时间:2012-09-05 09:46:23

标签: php

我一直在将每周视图日历放在一起,让用户可以使用表单上的按钮向后或向前移动一周。一切都运作良好,除了当日历首次打开它时,如果是一周的开始,那么当天是剩余的日子全部都是。

这是我到目前为止所拥有的......

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日成为星期二。

我在本网站上发现另一个主题发现本周开始,但我无法成功实施任何主题

我将非常感谢在这件事上提供任何帮助,我已经为此工作了三天了......

1 个答案:

答案 0 :(得分:0)

试试这个:

$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');

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