PHP学习笔记之时间strtotime

刚开始是这样写的(时间区间):

 /**
     * 获取查询条件的日期区间
     * @param $date_flag
     * @return array
     */
    public static function conditionDate($date_flag)
    {
        $time = time();
        $start_date = '';
        $end_date = '';
        //今天
        if ($date_flag === 'today') {
            $start_date = date('Y-m-d', $time);
            $end_date = date('Y-m-d', strtotime($start_date) + 86400);
        }
        //昨天
        if ($date_flag === 'yesterday') {
            $end_date = date('Y-m-d', $time);
            $start_date = date('Y-m-d', strtotime($end_date) - 86400);
        }
        //本周
        if ($date_flag === 'week') {
            $week = date('N');
            $end_date = date('Y-m-d', strtotime(date('Y-m-d', $time)) + 86400);
            $start_date = date('Y-m-d', strtotime($end_date) - 86400 * $week);
        }
        //本月
        if ($date_flag === 'month') {
            $start_date = date('Y-m-01', time());
            $end_date = date('Y-m-d', strtotime(date('Y-m-d', $time)) + 86400);//本月就是明天截止的日期了
            //$thisMonthDays = date('t',$time); //指定时间月的天数
            //$end_date = date('Y-m-d', strtotime($start_date) + 86400*$thisMonthDays);
        }
 
        return ['start'=>$start_date, 'end'=>$end_date];
    }

//给定月份的天数
echo date('t',strtotime('2022-02-20'));
echo "\n\n";


echo date('Y-m-d H:i:s',strtotime('tomorrow'));
echo "\n\n";


echo date('Y-m-d H:i:s',strtotime('yesterday'));
echo "\n\n";

// 获取当天开始时间
echo date('Y-m-d H:i:s',strtotime(date('Y-m-d')));
echo "\n";


// 获取当天结束时间
echo date('Y-m-d H:i:s',strtotime(date('Y-m-d'))+86400-1);
echo "\n";

//后去最近7天
echo date('Y-m-d H:i:s',strtotime("-7 day"));
echo "\n";


// 获取某个月的第一天,获取某个月的最后一天
echo date('Y-m-d H:i:s',strtotime(date('Y-m-0'))+1);
echo "\n";

都是用86400来算,上面笔记个性化的是本周开始的时间,本月开始时间,其实拿到这些有跟简单的方法
可以参考 http://www.caizhichao.cn/738.html ,说得很详细了。

================

+1 month 解释相隔天数可能28,30、31天的情况

$date = "2022-01-31 00:00:00";//2022-03-03 00:00:00 相隔31天
//$date = "2022-04-01 00:00:00";//2022-05-01 00:00:00 相隔30天
//$date = "2022-02-02 00:00:00";
//$date = "2022-02-01 00:00:00";//2022-03-01 00:00:00 相隔28天
//$date = "2022-02-28 00:00:00";
//$date = "2022-01-01 00:00:00";//2022-01-02 00:00:00 相隔31天
echo $date."\n";
$nextMonthDay = date('Y-m-d H:i:s',strtotime('+1 month',strtotime($date)));
echo $nextMonthDay."\n";
// 是根据当前时间+当前时间的当月天数*86400,得到下个月的时间。
// 这就能够解释间隔28天,30天,31天的情况

posted @ 2019-08-07 10:31  ncsb  阅读(262)  评论(0编辑  收藏  举报