如果我有Date of Monday
Date of Sunday
格式的特定日期,我如何获得mysql
和DATETIME
?
我想了解一周的第一天的日期以及给定日期的最后一天。
我有约会' 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周开始是星期天,我猜。
答案 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
这就是它的全部内容。这就是我所谓的“自我评论代码”!我打赌你真的会喜欢带日期的节目; - )