PHP:如何获取一周中某一天的下一次出现的日期


PHP: How to get the date of the next occurrence of a day of the week

只给出一周中某一天的名称(星期一,星期二...星期日),我怎样才能找到当天下一次发生的日期?

我希望能够按下一个按钮,然后获取一周中的每一天、下一周的日期列表。我的星期将持续到周一至周日。例如,在星期五,我想单击它并获取即将到来的星期一到星期日的日期。在星期一,我想单击它并获取下周一至星期日的日期。

希望这是有道理的。

我总是更喜欢使用DateTime的面向对象的方式

// Create a new DateTime object
$date = new DateTime();
// Modify the date it contains
$date->modify('next monday');
// Output
echo $date->format('Y-m-d');

好消息是您也可以使用今天以外的日期执行此操作:

// Create a new DateTime object
$date = new DateTime('2006-05-20');
// Modify the date it contains
$date->modify('next monday');
// Output
echo $date->format('Y-m-d');

更好的是,回答你的第二个问题(直到今天我才知道):

$monday = new DateTime('monday');
// clone start date
$endDate = clone $monday;
// Add 7 days to start date
$endDate->modify('+7 days');
// Increase with an interval of one day
$dateInterval = new DateInterval('P1D');
$dateRange = new DatePeriod($monday, $dateInterval, $endDate);
foreach ($dateRange as $day) {
    echo $day->format('Y-m-d')."<br />";
}

引用

PHP 手册 - 日期时间

PHP 手册 - 日期间隔

PHP 手册 - 日期周期

PHP 手册 - 克隆

你的第一个问题有一个非常简单的答案,strtotime具有这个(以及更多)功能:

$timestamp = strtotime("next Wednesday");

给你下一个给定工作日的时间戳(午夜)(如果今天是星期三,它会给出下一个星期三)

要获取您在问题的第二部分中提到的列表,只需遍历所有工作日运行此代码即可。

如果您不知道可以使用 strftime() 轻松地将$timestamp转换为可读日期。

对于任何高级日期逻辑,请查看功能强大的日期时间类的文档。

$date = strtotime("next monday");
$date_str = date("Y-m-d", $date);
echo strtotime("next Thursday"), "'n";
echo strtotime("last Monday"), "'n";

http://php.net/manual/en/function.strtotime.php

strtotime("next $day_of_week");