给一个任意的时间戳,计算出该时间所在当月的第一个星期一是多少号。
解决思路如下:
思路:获取当月1号是星期几,然后加上对应天数,使其加到星期一
1.当1号正好是星期一时,就返回当月1号的日期
2.当1号是星期2-6中的一天时,加上计算到下周一的间隔天数。
3.当1号是星期天时,加1天就好了。
实现代码如下所示:
function getFirstMondayOfMonth($time){ $firtDayOfMonth = date("Y-m-01", $time); //获取当月1号是星期几 //特殊之处:当是星期天时,w返回0 $w = date("w", strtotime($firtDayOfMonth)); if( 1 == $w ){ return $firtDayOfMonth; } //计算到下周一的间隔天数 $plusDay = 0 == $w ? 1:8-$w; return date("Y-m-d H:i:s", strtotime($firtDayOfMonth."+".$plusDay."days")); } $nowTime = time(); echo getFirstMondayOfMonth($nowTime);
$plusDay = 0 == $w ? 1:8-$w; $plusDay += 7;
$plusDay = 0 == $w ? 1:8-$w; $plusDay += 2;