美文网首页
PHP下几个与时间相关的方法

PHP下几个与时间相关的方法

作者: Sheehan | 来源:发表于2017-05-03 14:56 被阅读11次

    通过年份和周数返回开始时间和结束时间

    /**
    * @param int $year 要计算日期的年份
    * @param int $week 要计算的周数
    * @return bool 返回周开始和结束时间的时间戳和格式化日期
    */
    protected function getWeekStartAndEndDate($year, $week = 1)
    {
        $year = (int)$year;
        $week = (int)$week;
        //按给定的年份计算本年周总数
        $date = new \DateTime();
        $date->setISODate($year, 53);
        $weeks = max($date->format("W"), 52);
        //如果给定的周数大于周总数或小于等于0
        if ($week > $weeks || $week <= 0) {
            return false;
        }
        //如果周数小于10
        if ($week < 10) {
            $week = '0' . $week;
        }
        //当周起止时间戳
        $timeYmd['start_tamp'] = strtotime($year . 'W' . $week);
        $timeYmd['end_tamp'] = strtotime('+1 week -1 day', $timeYmd['start_tamp']);
        //当周起止日期
        $timeYmd['start'] = date("Y-m-d", $timeYmd['start_tamp']);
        $timeYmd['end'] = date("Y-m-d", $timeYmd['end_tamp']);
        //返回日期形式
        return $timeYmd;
    }
    

    如果想求出当前周数或者几周前(后)的周数,可以使用如下方法

    date('W', time()); // 当前周数
    date('W', time()) - 2; // 两周以前的周数
    date('W', time()) + 3; // 三周以后的周数
    

    求上个月, 三个月后的第一天

    /**
    * @param string $m 偏移的月数
    * @return false|string 要计算的日期
    */
    public function calculationDateTime($m = '0')
    {
        $tmp_date = date("Ym");
        //切割出年份
        $tmp_year = substr($tmp_date, 0, 4);
        //切割出月份
        $tmp_mon = substr($tmp_date, 4, 2);
        return date('Y-m-1 00:00:00', $month = mktime(0, 0, 0, $tmp_mon + (int)$m, 1, $tmp_year));
     }
    

    这里求的是整月的第一天.
    如:今天是2017-05-03, 求上个月的第一天就是

    calculationDateTime(-1); // 返回: 2017-04-01 00:00:00
    

    求三个月后的第一天就是

    calculationDateTime(3); // 返回: 2017-08-01 00:00:00
    

    求当月第一天就是

    calculationDateTime(); //返回 2017-05-01 00:00:00
    

    相关文章

      网友评论

          本文标题:PHP下几个与时间相关的方法

          本文链接:https://www.haomeiwen.com/subject/unwktxtx.html