php下周将根据所选日期进行

时间:2016-04-08 14:31:07

标签: php date datetime

我正在尝试创建一个简单的每周议程。这是我的代码:

$daterange = new DatePeriod(
     new DateTime('2016-04-08'),
     new DateInterval('P1D'),
     new DateTime(date('Y-m-d',strtotime ( '1 week' , strtotime ( '2016-04-08' ) )))
);

然后是一个简单的循环:

foreach ($daterange as $k => $row) {
    echo  $row->format('d') ." - " . $row->format('D') . "<br>";
}

产生类似的东西:

08 - Fri
09 - Sat
10 - Sun
11 - Mon
12 - Tue
13 - Wed
14 - Thu

哪种方法效果很好,但我需要的是根据一周的第一天显示从星期日或星期一开始的日期。期望的结果应该是:

10 - Sun
11 - Mon
12 - Tue
13 - Wed
14 - Thu
15 - Fri
16 - Sat

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

date('Y-m-d', strtotime('last Monday', '2016-04-08'));

您可以将last Monday / next Monday / last Sunday替换为next Sunday,具体取决于您的需要。这将为您提供当天的上周/下一周的第一天。然后,您可以从此日期开始获得7天的间隔。

答案 1 :(得分:0)

混合strtotime()date()mytable等通常被认为是不好的,所以这是另一个解决方案:

// The question is ambiguous on this, so we'll use a
// variable to configure the preferred first weekday
$firstWeekDay = 'Sunday';

$dateTime     = new DateTime();
// If today isn't the first week day, get the last one
if ($dateTime->format('l') !== $firstWeekDay)
{
        $dateTime->modify("last {$firstWeekDay}");
}

$period = new DatePeriod(
        $dateTime,
        new DateInterval('P1D'),
        6 // Just tell PHP to create 6 (7 - the 1 start day) more dates
);