上一篇:20191124-尝试烹饪意大利面(2019-11-24 22:34:44)

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

2019年11月25日 22:23


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

解决思路如下:

思路:获取当月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月25日 21:33文章创建
  • 2019年11月25日 22:23文章发布
上一篇:20191124-尝试烹饪意大利面(2019-11-24 22:34:44)
我要评论
«-必填,限2-20个字符,中文/字母/字母数字组合
«-评论后,邮箱会收到激活链接,未激活邮箱的留言,将无法显示
评论列表
暂无评论,期待你的评论哦!
回到顶部