2017-10-07 151 views
3

我想獲取一週的開始日期和結束日期。 我使用PHP星期一星期一和星期六日期問題

$monday = date('Y-m-d', strtotime('this monday', strtotime($model->date))); 
$saturday = date('Y-m-d', strtotime('this saturday', strtotime($model->date))); 

時的日期是18-09-2017那麼星期一是18-09-2017和saturaday是23-09-2017。 但是,如果日期是23-09-2017,那麼星期一是25-09-2017,星期六是23-09-2017。

這是爲什麼?

我該如何調整代碼,使其始終爲18-09-2017以及2017年9月23日至2017年3月23日期間爲18-09-2017或23-09-2017。 我想要一致性。

+1

1天添加到您的日期(' strtotime('23 -09-2017 + 1天')'),然後得到'上週一'... – CBroe

+0

再次檢查18-09-2017和25-09-2017都是9月的星期一。你在十月看。 – arun

回答

1

試試這個日期 - 時間格式化功能,它轉換成ISO和獲取當前工作日

<?php 
$dt = "23-09-2017"; 
function getDay($day,$date) 
{ 
    $days = ['Monday' => 1, 'Tuesday' => 2, 'Wednesday' => 3, 'Thursday' => 4, 'Friday' => 5, 'Saturday' => 6, 'Sunday' => 7]; 

    $date = new \DateTime($date); 
    $date->setISODate((int)$date->format('o'), (int)$date->format('W'), $days[ucfirst($day)]); 
    return $date; 
} 
echo "Monday: ".getDay('Monday',$dt)->format("d-m-Y"); 

echo "Saturday: ".getDay('Saturday',$dt)->format("d-m-Y"); 

DEMO

+0

thx兄弟它的工作 – arun

0

我的代碼是

$dayofweek = date('w', strtotime($model->date)); 
       if($dayofweek == 6) 
       { 
        $monday = date('Y-m-d', strtotime('last monday', strtotime($model->date))); 
       } 
       else 
       { 
        $monday = date('Y-m-d', strtotime('this monday', strtotime($model->date))); 
       } 
       $saturday = date('Y-m-d', strtotime('this saturday', strtotime($model->date))); 
+0

請將您的代碼添加到問題並刪除此「答案」。 –

相關問題