我一直在将每周视图日历放在一起,让用户可以使用表单上的按钮向后或向前移动一周。一切都运作良好,除了当日历首次打开它时,如果是一周的开始,那么当天是剩余的日子全部都是。
这是我到目前为止所拥有的......
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日成为星期二。
我在本网站上发现另一个主题发现本周开始,但我无法成功实施任何主题
我将非常感谢在这件事上提供任何帮助,我已经为此工作了三天了......
答案 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');
找到新的星期一后,将其存储回会话中。