我正在尝试创建一个简单的每周议程。这是我的代码:
$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
答案 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 );