需要获取两个日期之间的所有星期三日期。对于前 开始和结束日期=
SBP-xx
预期结果=
01/07/2019 - 01/25/2019
我可以使用01/09/2019,
01/16/2019,
01/23/2019
条件以过滤星期三并推入数组。有什么方法可以得到结果吗?
答案 0 :(得分:2)
使用DatePeriod Class。日期时间段允许在给定时间段内按固定的时间间隔在一组日期和时间上进行迭代。
$period = new DatePeriod(
new DateTime($date1),
new DateInterval('P1D'),
new DateTime($date2)
);
$cnt = 0;
foreach ($period as $key => $value) {
if($value->format('D') == 'Wed'){
$wed[$cnt] = $value->format('m/d/Y');
$cnt++;
}
}
输出
[0] => 01/09/2019
[1] => 01/16/2019
[2] => 01/23/2019
答案 1 :(得分:0)
<?php
$from_date ='01/07/2019';
$to_date ='01/25/2019';
$from_date = new DateTime($from_date);
$to_date = new DateTime($to_date);
$get_date = array();
for ($date = $from_date; $date <= $to_date; $date->modify('+1 day')) {
if($date->format('l') == 'Wednesday'){
$get_date[] = $date->format('m/d/Y');
}
}
print_r($get_date);
输出
Array ( [0] => 01/09/2019 [1] => 01/16/2019 [2] => 01/23/2019 )
答案 2 :(得分:0)
您将获得所需的输出。
<?php
$date1 = date("01/07/2019");
$date2 = date("01/25/2019");
$day1 = date('D', strtotime($date1));
$period = new DatePeriod(New Datetime($date1),New DateInterval('P1D'),New DateTime($date2));
$cnt = 0;
foreach($period as $key => $value ){
if($value->format('D') == 'Wed'){
$wed[$cnt] = $value->format('m/d/Y');
echo $wed[$cnt];
$cnt++;
echo '<BR>';
}
}
?>
答案 3 :(得分:0)
使用基础DateTime
类,而不是每天检查一次,只需在日期上增加7天,并检查它是否仍小于结束日期。唯一的附加逻辑是,如果开始日期是星期三,则使用该日期,否则使用下一个星期三...
$fromDate = new DateTime('01/02/2019');
if ( $fromDate->format('D') != 'Wed') {
$fromDate->modify("next wednesday");
}
$toDate = new DateTime('01/25/2019');
do {
echo $fromDate->format("m/d/Y").PHP_EOL;
}
while ( $fromDate->modify(""+7 day"") < $toDate );
输出...
01/02/2019
01/09/2019
01/16/2019
01/23/2019