簡體   English   中英

如何在PHP中的兩個日期之間獲取星期三日期

[英]how to get wednesday date between two dates in php

需要獲取兩個日期之間的所有星期三日期。 對於前開始日期和結束日期=

01/07/2019 - 01/25/2019

預期結果=

01/09/2019,
01/16/2019,
01/23/2019

我可以使用if ($startDate->format('w') == 2) {}條件來過濾星期三並推入數組。 有什么方法可以得到結果嗎?

使用DatePeriod類 日期時間段允許在給定時間段內按固定的時間間隔在一組日期和時間上進行迭代。

$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
<?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 )

您將獲得所需的輸出。

<?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>';  

    } 

}



?>

使用基本的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM