PHP - 时间操作各种实战实例,总有你想要的

简单粗暴 ⛽️

获取当天的开始时间与结束时间

// 当天开始时间
$start_time = strtotime(date("Y-m-d", time())); // 1620662400

// 当天结束时间
$end_time = $start_time + 60 * 60 * 24 - 1; // 1620748799

var_dump(
    date("Y-m-d H:i:s", $start_time), // 2021-05-11 00:00:00
    date("Y-m-d H:i:s",$end_time) // 2021-05-11 23:59:59
);



获取指定时间的之前或之后的时间戳

$time = time();

// 前两天
strtotime("-2 day", $time);

// 前两个礼拜
strtotime("-2 week", $time);

// 前两个月
strtotime("-2 month", $time);

// 前两年
strtotime("-2 year", $time);

// strtotime() 第二个参数 $time 如果不传,默认以当前时间计算
// 可以将 '-2 day' 变为 '+2 day' ,就变成获取后两天的时间了



获取倒计时描述

    /**
     * 获取倒计时描述
     * @link 原文作者请留言
     * @param [Integer] $start_time 开始时间时间戳
     * @param [Integer] $end_time   结束时间时间戳
     * @return [string] $mag        倒计时展示
     */
    function getCountDown($start_time, $end_time) {
    
    
        $mag = "";

        if ($start_time > time()) {
    
    

            $ga = date("w");

            switch ($ga) {
    
    
                case 1 : $zh = date("Y-m-d", strtotime("+6 day"));
                    break;
                case 2 : $zh = date("Y-m-d", strtotime("+5 day"));
                    break;
                case 3 : $zh = date("Y-m-d", strtotime("+4 day"));
                    break;
                case 4 : $zh = date("Y-m-d", strtotime("+3 day"));
                    break;
                case 5 : $zh = date("Y-m-d", strtotime("+2 day"));
                    break;
                case 6 : $zh = date("Y-m-d", strtotime("+1 day"));
                    break;
                case 7 : $zh = date("Y-m-d");
                    break;
            }

            $xz = strtotime($zh) + 3600 * 24 * 7;

            $weekarray = array("日", "一", "二", "三", "四", "五", "六", "日");

            if (date('Y-m-d', $start_time) == date("Y-m-d")) {
    
    

                $mag = '今天 ' . date('H:i', $start_time) . ' 开始';
            } else if (date("Y-m-d", strtotime("+1 day")) == date("Y-m-d", $start_time)) {
    
    

                $mag = '明天 ' . date('H:i', $start_time) . ' 开始';
            } else if (date("Y-m-d", strtotime("+1 day")) == date("Y-m-d", $start_time)) {
    
    

                $mag = '明天 ' . date('H:i', $start_time) . ' 开始';
            } else if (date("Y-m-d", strtotime("+2 day")) == date("Y-m-d", $start_time)) {
    
    

                $mag = '后天 ' . date('H:i', $start_time) . ' 开始';
            } else if ($w < 5 && strtotime($zh) >= strtotime(date("Y-m-d", $start_time))) {
    
    

                $mag = '本周' . $weekarray[date('w', $start_time)] . ' ' . date('H:i', $start_time) . ' 开始';
            } else if ($xz >= strtotime(date("Y-m-d", $start_time))) {
    
    

                $mag = '下周' . $weekarray[date('w', $start_time)] . ' ' . date('H:i', $start_time) . ' 开始';
            } else {
    
    

                $mag = date('m-d H:i', $start_time) . ' 开始';
            }
        } else {
    
    
            if($end_time- time()<=0){
    
    
                
                $mag =  ' 已经结束';
            
            }else if ($end_time - time() <= 3600 * 24 * 10) {
    
    
                
                $mag = $this->time_ago($end_time) . ' 后结束';
            } else {
    
    

                $mag = date('m-d H:i', $end_time) . ' 结束';
            }
        }
        
        return $mag;
    }



计算两个日期的数字差(年月日时分秒)

    /**
     * 计算两个日期的数字差(年月日时分秒)
     * @param  [string] $date1 [格式: 2020-05-20]
     * @param  [string] $date2 [格式: 2020-08-21]
     * @return [array]         [格式: array('y'=>'00','m'=>'3','d'=>'1','h'=>00','i'=>0','s'=>'0','a'=>'93')]
     */
    function diffDate($date1,$date2)
    {
    
    
        $datetime1 = new \DateTime($date1);
        $datetime2 = new \DateTime($date2);
        $interval = $datetime1->diff($datetime2);
        $time['y'] = $interval->format('%Y'); // 年
        $time['m'] = $interval->format('%m'); // 月
        $time['d'] = $interval->format('%d'); // 日
        $time['h'] = $interval->format('%H'); // 小时
        $time['i'] = $interval->format('%i'); // 分钟
        $time['s'] = $interval->format('%s'); // 秒
        $time['a'] = $interval->format('%a'); // 两个时间相差总天数
        return $time;
    }



时间计算, 几年前、几个月前 (年,月,日,时,分,秒)

/** 
 * 时间计算, 几年前、几个月前 (年,月,日,时,分,秒) 
 * @link(Young-杨, https://blog.csdn.net/vailook/article/details/54133449)
 * @param [Integer]   $time  对比时间 
 * @param [String]    
 */
function format_date($time){
    
    
    $t=time()-$time;
    $f=array(
        '31536000'=>'年',
        '2592000'=>'个月',
        '604800'=>'星期',
        '86400'=>'天',
        '3600'=>'小时',
        '60'=>'分钟',
        '1'=>'秒'
    );
    foreach ($f as $k=>$v)    {
    
    
        if (0 !=$c=floor($t/(int)$k)) {
    
    
            return $c.$v.'前';
        }
    }
}



PHP 两个日期(时间段) 之间的日期数组

/** 
 * PHP 两个日期(时间段) 之间的日期数组
 * @link(路过火车, https://blog.csdn.net/weixin_42362496/article/details/85204596)
 * @param [string]   $start_time  对比时间 2020-10-10
 * @param [string]   $end_time    结束时间 2020-10-20
 * @param [array]    
 */
function periodDate($start_time,$end_time){
    
    
    $start_time = strtotime($start_time);
    $end_time = strtotime($end_time);
    $i=0;
    while ($start_time<=$end_time){
    
    
        $arr[$i]=date('Y-m-d',$start_time);
        $start_time = strtotime('+1 day',$start_time);
        $i++;
    }

    return $arr;
}

猜你喜欢

转载自blog.csdn.net/qq_35453862/article/details/116657641