日期&时间 - >选择特定的日历周

时间:2018-06-04 14:51:20

标签: php datetime

我有一个功能,它给了我特定年份的所有日历周。我创建了一个包含所有日历周的下拉菜单。我的功能看起来像这样:

function listYearWeeks($year) {

        $weeks=array();
        $run_stamp=strtotime($year."-01-01");

        for ($x=0;$x<366;$x++) {
            if (date("w",$run_stamp)==0) { // Montag
                if ($weeks[date("W",$run_stamp)]=="") {
                    $weeks[date("W",$run_stamp)]=$run_stamp;
                }
            }
            $run_stamp=($run_stamp+86400);
        }

        return $weeks;

}

我的html / php代码看起来像这样:

<?php $data=listYearWeeks(2018); ?>
<div class='row'>
    <div class='col-md-4 col-xs-12 col-md-offset-3'>
        <select class='form-control' name='calendar' id='calendar' onChange='changeDate()'>
            <?php foreach ($data as $key=>$value) { ?>
                <option value='".$value."'>Calendar week <?php  ".$key." ?></option>
            <?php } ?>
        </select><br />

    </div>
</div>

我现在有一个下拉菜单,现在是2018年的日历周。我需要实现的是,并非所有日历周都显示在选择选项中,而是应该从当前日历周开始,并且应该始终显示接下来的三个日历周。

所以选择选项应该是: 日历周23(当前日历周) 日历周24 日历周25 日历周26日

有人可以告诉我我需要更改以从当前日历周开始,只显示接下来的3个日历周吗?

1 个答案:

答案 0 :(得分:0)

对于你想要的东西来说,这很重要 首先,你可以从现在开始,而不是从年初开始:
$run_stamp=strtotime($year."-01-01"); =&gt; $run_stamp=time();

但效率更高:

for($i = 0; $i < 3; $i++) {
    $week = date("W", strtotime("+$i weeks"));
    echo '<option value="' . $week . '">Calendar week ' . $week . '"</option>';
}

请注意,即使您在一年的最后一周,它也会有效。