PHP如何获取给定日期的星期一和星期日的日期?

时间:2016-06-26 12:21:05

标签: php date

如果我有Date of Monday Date of Sunday格式的特定日期,我如何获得mysqlDATETIME

我想了解一周的第一天的日期以及给定日期的最后一天。

我有约会' 2016-06-05'它在'Y-m-d' 我正是这样尝试的。

<?php
$date = '2016-06-05'; 
echo date("Y-m-d", strtotime('monday this week', strtotime($date))), "\n";   
echo date("Y-m-d", strtotime('sunday this week', strtotime($date))), "\n";
?>

但它的给予

2016-06-06
2016-06-12

这是错误的一周,它应该给

2016-05-30
2016-06-05
我甚至尝试过这样的方式。

$date = '2016-06-05';
echo date("Y-m-d", strtotime('monday', strtotime('this week', strtotime($date)))), "\n";   
echo date("Y-m-d", strtotime('sunday', strtotime('this week', strtotime($date)))), "\n";   

OR

$date = '2016-06-05'; 
echo date("Y-m-d", strtotime('monday', strtotime($date))), "\n";   
echo date("Y-m-d", strtotime('sunday', strtotime($date))), "\n";

使用PHP 5.3

我在这里缺少什么?

更新:

我想出了这个,这给了预期的输出。

function get_monday_sunday($date){
$dates_array = array();

    if(date('N', strtotime($date)) == 7){

    $dates_array['monday'] = date("Y-m-d", strtotime('Monday last week', strtotime($date)));   
    $dates_array['sunday'] =  date("Y-m-d", strtotime('Sunday last week', strtotime($date)));   

    }else{

    $dates_array['monday'] = date("Y-m-d", strtotime('Monday this week', strtotime($date)));   
    $dates_array['sunday'] =  date("Y-m-d", strtotime('Sunday this week', strtotime($date)));   
    }
return $dates_array;
}

$date = '2016-06-05'
print_r(get_monday_sunday($date));

看起来当这一天是一周的最后一天,然后下周重新开始,即php周开始是星期天,我猜。

1 个答案:

答案 0 :(得分:3)

在我制作的每个php项目中,我总是包含Carbon包。它扩展了DateTime类并添加了一些非常好的功能,这使得使用日期变得更加容易。

如果您接受我的建议,您的代码将如下所示:

$date = Carbon::parse($dateStringFromDb);
echo $date->startOfWeek()->format('Y-m-d'); // monday
echo $date->endOfWeek()->format('Y-m-d');  // sunday

这就是它的全部内容。这就是我所谓的“自我评论代码”!我打赌你真的会喜欢带日期的节目; - )