只给出一周中某一天的名称(星期一,星期二...星期日),我怎样才能找到当天下一次发生的日期?
我希望能够按下一个按钮,然后获取一周中的每一天、下一周的日期列表。我的星期将持续到周一至周日。例如,在星期五,我想单击它并获取即将到来的星期一到星期日的日期。在星期一,我想单击它并获取下周一至星期日的日期。
希望这是有道理的。
我总是更喜欢使用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");