示例:
$startDate是2007-02-05周一,$endDate是2007-02-20周二.然后我想要它列出:
Monday 2007-02-05
Monday 2007-02-12
Monday 2007-02-19
Run Code Online (Sandbox Code Playgroud)
我查看了PHP手册,发现这是为了获得两个日期之间的所有日子.但是如何以我想要的方式做到这一点?PHP代码:
Pau*_*aul 38
而不是获取所有日子并循环遍历它们,在开始日期之后获得第一个星期一,然后一次迭代7天:
$endDate = strtotime($endDate);
for($i = strtotime('Monday', strtotime($startDate)); $i <= $endDate; $i = strtotime('+1 week', $i))
echo date('l Y-m-d', $i);
Run Code Online (Sandbox Code Playgroud)
我需要相同的并创建一个简单的方法.
public function getMondaysInRange($dateFromString, $dateToString)
{
$dateFrom = new \DateTime($dateFromString);
$dateTo = new \DateTime($dateToString);
$dates = [];
if ($dateFrom > $dateTo) {
return $dates;
}
if (1 != $dateFrom->format('N')) {
$dateFrom->modify('next monday');
}
while ($dateFrom <= $dateTo) {
$dates[] = $dateFrom->format('Y-m-d');
$dateFrom->modify('+1 week');
}
return $dates;
}
Run Code Online (Sandbox Code Playgroud)
然后使用它.
$dateFromString = '2007-02-05';
$dateToString = '2007-02-20';
var_dump($this->getMondaysInRange($dateFromString, $dateToString));
Run Code Online (Sandbox Code Playgroud)
结果:
array (size=3)
0 => string '2007-02-05' (length=10)
1 => string '2007-02-12' (length=10)
2 => string '2007-02-19' (length=10)
Run Code Online (Sandbox Code Playgroud)
也许对某人有帮助.
您可以使用以下函数获取特定日期的日期范围之间的日期数组.
您必须输入开始日期,结束日期和日期编号.日期编号如下.1 =星期一,2 =星期二,3 =星期三,4 =星期四.5 =星期五,6 =星期六,7 =星期天.
function getDateForSpecificDayBetweenDates($startDate,$endDate,$day_number){
$endDate = strtotime($endDate);
$days=array('1'=>'Monday','2' => 'Tuesday','3' => 'Wednesday','4'=>'Thursday','5' =>'Friday','6' => 'Saturday','7'=>'Sunday');
for($i = strtotime($days[$day_number], strtotime($startDate)); $i <= $endDate; $i = strtotime('+1 week', $i))
$date_array[]=date('Y-m-d',$i);
return $date_array;
}
Run Code Online (Sandbox Code Playgroud)
for ($i = strtotime($startDate); $i <= strtotime($endDate); $i = strtotime('+1 day', $i)) {
if (date('N', $i) == 1) //Monday == 1
echo date('l Y-m-d', $i); //prints the date only if it's a Monday
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22967 次 |
| 最近记录: |