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

时间:2015-01-28 13:42:32

标签: php

只给出一周中某一天的名称(星期一,星期二......星期日),如何找到当天下一次出现的日期?

我希望能够按下按钮,然后获取下周的每周日期列表。我的周将在周一至周日进行。因此,例如,星期五我想点击它并获取即将到来的星期一到星期日的日期。在星期一,我想点击它并获取下周一到周日的日期。

希望这是有道理的。

4 个答案:

答案 0 :(得分:3)

我总是喜欢使用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手册 - DateTime

PHP手册 - DateInterval

PHP手册 - DatePeriod

PHP手册 - clone

答案 1 :(得分:2)

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

$timestamp = strtotime("next Wednesday");

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

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

如果您不知道$ timestamp可以很容易地与strftime()的可读日期相对应。

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

答案 2 :(得分:1)

$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

答案 3 :(得分:1)

strtotime("next $day_of_week");