PHP在一个表中列出本周的日期,该表可以通过按钮更改为显示下周或上周


PHP List the days of this week in a table that can be changed to show next week or last week with a button

我正在尝试建立并运行一个日历。尽管我对PHP不是很好,但我还是成功地创建了一个月视图日历并运行得很好。然而,门柱已经有所移动,权力机构希望每周查看日历。当他们打开时,它会在表格中显示当前一周的所有日子,然后可以选择前进一周,显示下一周或后退一周。我已经为此奋斗了很多天,当我确信必须有一个简单的解决方案时,我的代码已经变得复杂而混乱。

我知道这是一个很大的要求,但如果有人能给我指明正确的方向,或者给我一个简单的脚本,让我继续前进,我会非常感激,这样我就可以回到的生活中

这就是我目前拥有的

$week_number = date("W");
$year = date("Y");
if($week_number < 10){
   $week_number = "0".$week_number;
}
for($day=0; $day<=6; $day++)
{
  echo date('d-m-Y', strtotime($year."W".$week_number.$day))." | 'n";
}
?>

如果点击"next_week"按钮并点击(我没有包含自发布表单的一部分,以保持脚本的简单性),我设法在$week_number中添加1,使其以一种方式启动和运行,直到年份发生变化,因为周数一直超过53,我还没有添加使$year增加或减少的方法。这就是一切出错的地方。

DateTime和DateInterval是您的朋友(PHP 5.3+)

试试看:

<?php
$weekModifier = 0;
$date = new DateTime();
if($date->format('N') !== 1) {
    $date->sub(new DateInterval('P'. $date->format('N') . 'D'));
}
$interval = new DateInterval('P'.abs($weekModifier).'W');
if($weekModifier > 0) {
    $date->add($interval);  
} else {
    $date->sub($interval);  
}
for($i = 1; $i <= 7; $i++) {
    echo $date->add(new DateInterval('P1D'))->format('l Y-m-d') . "<br>'n"; 
}
?>

在0离开本周将使用本周。否则,您可以简单地使用1、2、3、-、1、-2、-3等…

看看它在行动中。