更新时间:2023-01-27 21:33:24
可以使用 DatePeriod :
$firstMondayThisWeek= new DateTime('2011/06/01');
$firstMondayThisWeek->modify('tomorrow');
$firstMondayThisWeek->modify('last Monday');
$nextFiveWeekDays = new DatePeriod(
$firstMondayThisWeek,
DateInterval::createFromDateString('+1 weekdays'),
4
);
print_r(iterator_to_array($nextFiveWeekDays));
请注意, DatePeriod
是一个 Iterator
,所以除非你确实在数组中有日期,否则你可以把 DatePeriod
作为容器。
Note that DatePeriod
is an Iterator
, so unless you are really fixed on having the dates in an array, you can just as well go with the DatePeriod
as container.
以上将会提供类似的内容( demo )
The above will give something like (demo)
Array
(
[0] => DateTime Object
(
[date] => 2011-05-30 00:00:00
[timezone_type] => 3
[timezone] => Europe/Berlin
)
[1] => DateTime Object
(
[date] => 2011-05-31 00:00:00
[timezone_type] => 3
[timezone] => Europe/Berlin
)
[2] => DateTime Object
(
[date] => 2011-06-01 00:00:00
[timezone_type] => 3
[timezone] => Europe/Berlin
)
[3] => DateTime Object
(
[date] => 2011-06-02 00:00:00
[timezone_type] => 3
[timezone] => Europe/Berlin
)
[4] => DateTime Object
(
[date] => 2011-06-03 00:00:00
[timezone_type] => 3
[timezone] => Europe/Berlin
)
)
一个5.3之前的解决方案将是
One pre-5.3 solution to do that would be
$firstMondayInWeek = strtotime('last Monday', strtotime('2011/06/01 +1 day'));
$nextFiveWeekDays = array();
for ($days = 1; $days <= 5; $days++) {
$nextFiveWeekDays[] = new DateTime(
date('Y-m-d', strtotime("+$days weekdays", $firstMondayInWeek))
);
}
虽然我真的不明白为什么要使用DateTime对象你不会/不能在你的项目中使用他们的API。正如你所看到的,这是所有旧的日期函数,DateTime只是容器。
though I really dont see why you would want to use DateTime objects for this when you dont/cannot also use their API in your project. As you can see, this is all the old date functions with DateTime just being the container.