上一篇:聆听萨克斯的优美(2019-11-24 22:59:43)
文章大纲

php获取某月第一个星期一的时间戳

2019-11-25 22:23:17


给一个任意的时间戳,计算出该时间所在当月的第一个星期一是多少号。

解决思路如下:

思路:获取当月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);

拓展一下,如果问题是获取某月的第二个或第三个星期一呢?

回答:在上面代码里,把间隔天数多加7天或14天就好了。
$plusDay = 0 == $w ? 1:8-$w;
$plusDay += 7;

继续拓展,如果问题是获取某月的第一个星期二或星期三呢?

回答:同样是在上述代码里计算间隔天数里下功夫,如果是星期三,想比星期一多2天,间隔天数计算就变成如下:
$plusDay = 0 == $w ? 1:8-$w;
$plusDay += 2;


上一篇:聆听萨克斯的优美(2019-11-24 22:59:43)
我要评论
评论列表