只给出一周中某一天的名称(星期一,星期二......星期日),如何找到当天下一次出现的日期?
我希望能够按下按钮,然后获取下周的每周日期列表。我的周将在周一至周日进行。因此,例如,星期五我想点击它并获取即将到来的星期一到星期日的日期。在星期一,我想点击它并获取下周一到周日的日期。
希望这是有道理的。
答案 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";
答案 3 :(得分:1)
strtotime("next $day_of_week");