2017-10-07 153 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

请将您的代码添加到问题并删除此“答案”。 –

相关问题