按给定日期开始和结束本周

时间:2015-03-10 12:28:52

标签: php date

是否有一个简短的预设功能可以按给定的$date查找一周的开始(星期一)和结束(星期日)?

我试过了: 1)

date("Y-m-d", strtotime('sunday this week ' . $date));
date("Y-m-d", strtotime('monday this week ' . $date));

但是当$date是星期天时它会失败...它会返回下周的星期一。

2)也是这个

date("Y-m-d", strtotime('last monday ' . $date));
date("Y-m-d", strtotime('next sunday ' . $date));

但是,如果$date是星期一或星期日,则会再次给出上一周/下周。

我知道可以用很少的条件来完成..但我正在寻找更多开箱即用的解决方案。

1 个答案:

答案 0 :(得分:1)

您可以使用DateTime::format('N')获取一周中的ISO-8601日(1 =星期一... 7 =星期日)并执行一些简单的日期算术以获取包含该星期一的星期一和星期日指定日期(我假设您希望从星期一开始一周)。

// Today (or any other day you like)
$today = new DateTime('now');
echo('Today:  '.$today->format('Y-m-d (D)')."\n");

// Day of week (1 = Monday .. 7 = Sunday)
$dow = $today->format('N');

// Monday is ($dow-1) days in the past
$monday = clone $today;
$monday->sub(new DateInterval('P'.($dow-1).'D'));
echo('Monday: '.$monday->format('Y-m-d')."\n");

// Sunday is 6 days after Monday
$sunday = clone $monday;
$sunday->add(new DateInterval('P6D'));
echo('Sunday: '.$sunday->format('Y-m-d')."\n");