所以我遇到了一种情况,我想检索特定周号下的日期。我尝试了一些方法,但不幸的是,它们没有成功。
因此,首先我要得到我已经/选择/输入的日期的周数。
$week_number = date('W', strtotime(23/08/2022)) //Will output 34
我试图做的…但返回的日期是随机的,不是我所期望的
$dates = array();
for($i = 1; $i <=7; $i++){
$dates[$i] = date('Y-m-d', strtotime($selected_date . ' -' . ($week_number) . ' days +' .
$i . ' days'));
}
我所期待的:
[1] => 2022-08-22
[2] => 2022-08-23
[3] => 2022-08-24
[4] => 2022-08-25
[5] => 2022-08-26
[6] => 2022-08-27
[7] => 2022-08-28
我不知道这是不是一个重复的问题,但我找不到我要找的东西。
不久前我刚刚做了一些非常类似的事情。我必须找到某一年中某一周中某一天的日期。我的解决方案是:
function getDateForWeekDay($year, $weekNo, $dayOfWeekNo)
// return the exact date of this weekday, using ISO 8601
{
$date = new DateTime();
$date->setISODate($year, $weekNo, $dayOfWeekNo);
return $date->format('Y-m-d');
}
例如,echo getDateForWeekDay(2020, 34, 1);
将返回2020-08-17
,请参见:https://3v4l.org/bkjUj
请参阅PHP手册:DateTime::setISODate((
您可以很容易地扩展它来生成您的数组。
for ($day = 1; $day <= 7; $day++) {
$dates[$day] = getDateForWeekDay(2020, 34, $day);
}
print_r($dates);
返回所需的结果。请参阅:https://3v4l.org/iDKOu
您可以使用它获取一周中的星期一和星期日:
$day = 1; // 1 to 6, monday to saturday.
$dayDate = new DateTime();
$dayDate->setISODate($date->format('Y'), $date->format('W'), $day);