欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

php常用时间(time)处理函数

程序员文章站 2022-03-09 21:46:14
...
/**
 * @param $begin_time
 * @param $end_time
 * @return array
 * :计算两个时间戳之间相差的日时分秒
 */
function timediff($begin_time,$end_time)
{
    if($begin_time < $end_time){
        $starttime = $begin_time;
        $endtime = $end_time;
    }else{
        $starttime = $end_time;
        $endtime = $begin_time;
    }

    //计算天数
    $timediff = $endtime-$starttime;
    $days = intval($timediff/86400);
    //计算小时数
    $remain = $timediff%86400;
    $hours = intval($remain/3600);
    //计算分钟数
    $remain = $remain%3600;
    $mins = intval($remain/60);
    //计算秒数
    $secs = $remain%60;
    $res = array("day" => $days,"hour" => $hours,"min" => $mins,"sec" => $secs);
    return $res;
}
/**
 * @param $sTime
 * @param string $type
 * @param string $alt
 * @return false|string
 * 个性化时间
 */
function friendlyDate($sTime, $type = 'normal', $alt = 'false'){
    if (!$sTime) {
        return '';
    }
    //sTime=源时间,cTime=当前时间,dTime=时间差
    $cTime = time();
    $dTime = $cTime - $sTime;
    $dDay  = intval(date("z", $cTime)) - intval(date("z", $sTime));
    //$dDay     =   intval($dTime/3600/24);
    $dYear = intval(date("Y", $cTime)) - intval(date("Y", $sTime));
    //normal:n秒前,n分钟前,n小时前,日期
    if ($type == 'normal') {
        if ($dTime < 60) {
            if ($dTime < 10) {
                return '刚刚'; //by yangjs
            } else {
                return intval(floor($dTime / 10) * 10) . "秒前";
            }
        } elseif ($dTime < 3600) {
            return intval($dTime / 60) . "分钟前";
            //今天的数据.年份相同.日期相同.
        } elseif ($dYear == 0 && $dDay == 0) {
            //return intval($dTime/3600)."小时前";
            return '今天' . date('H:i', $sTime);
        } elseif ($dYear == 0) {
            return date("m月d日 H:i", $sTime);
        } else {
            return date("Y-m-d", $sTime);
        }
    } elseif ($type == '*') {
        if ($dTime < 60) {
            return $dTime . "秒前";
        } elseif ($dTime < 3600) {
            return intval($dTime / 60) . "分钟前";
        } elseif ($dTime >= 3600 && $dDay == 0) {
            return intval($dTime / 3600) . "小时前";
        } elseif ($dDay > 0 && $dDay <= 7) {
            return intval($dDay) . "天前";
        } elseif ($dDay > 7 && $dDay <= 30) {
            return intval($dDay / 7) . '周前';
        } elseif ($dDay > 30) {
            return intval($dDay / 30) . '个月前';
        }
        //full: Y-m-d , H:i:s
    } elseif ($type == 'full') {
        return date("Y-m-d , H:i:s", $sTime);
    } elseif ($type == 'ymd') {
        return date("Y-m-d", $sTime);
    } else {
        if ($dTime < 60) {
            return $dTime . "秒前";
        } elseif ($dTime < 3600) {
            return intval($dTime / 60) . "分钟前";
        } elseif ($dTime >= 3600 && $dDay == 0) {
            return intval($dTime / 3600) . "小时前";
        } elseif ($dYear == 0) {
            return date("Y-m-d H:i:s", $sTime);
        } else {
            return date("Y-m-d H:i:s", $sTime);
        }
    }
}
/**
 * 判断是否是时间戳
 * @param  string $timestamp [description]
 * @return boolean [description]
 * @date   2018-10-06
 * @author 心云间、凝听 <[email protected]>
 */
function is_timestamp($timestamp ='')
{
    if (!$timestamp) return false;
    return $is_unixtime = ctype_digit($timestamp) && $timestamp <= 2147483647;
}
/**
 * 时间戳格式化
 * @param int $time
 * @return string 完整的时间显示
 * @author huajie <[email protected]>
 */
function time_format($time = NULL, $format = 'Y-m-d H:i') {
    $time = $time === NULL ? time() : intval($time);
    return date($format, $time);
}
/**
 * [getUserAge 获取用户年龄]
 * @param string $birthday    生日时间  例如:1987年11月09日 ||  1987-11-09
 * @param string $type        时间显示  说说: 0 1987-11-09  1 1987年11月09日
 * @return [type]           [description]
 */
 function getUserAge($birthday) {
     $str = substr($birthday,0,4);               //出生日期
    $year = date('Y',time());                   //本年
     return $age = $year - $str;                 //个人年龄
  }
//转换剩余时间格式
function get_surplus_time($time = 0){
    if (!$time) {
        return false;
    }
    if ($time < 0) {
        return '已结束';
    } else {
        if ($time < 60) {
            return $time . '秒';
        } else {
            if ($time < 3600) {
                return floor($time / 60) . '分钟';
            } else {
                if ($time < 86400) {
                    return floor($time / 3600) . '小时';
                } else {
                    if ($time < 259200) {//3天内
                        return floor($time / 86400) . '天';
                    } else {
                        return floor($time / 86400) . '天';
                    }
                }
            }
        }
    }
}
/**
 * 判断是否日期时间
 * @return string
 */
function check_date_time($str_time, $format="Y-m-d H:i:s") {
    $unix_time = strtotime($str_time);
    $check_date= date($format, $unix_time);
    if ($check_date == $str_time) {
        return true;
    } else {
        return false;
    }
}
/**
 * get_some_day  获取n天前0点的时间戳
 * @param int $some n天
 * @param null $day 当前时间
 * @return int|null
 * @author:xjw129xjt(肖骏涛) [email protected]
 */
function get_some_day($some = 30, $day = null)
{
    $time = $day ? $day : time();
    $some_day = $time - 60 * 60 * 24 * $some;
    $btime = date('Y-m-d' . ' 00:00:00', $some_day);
    $some_day = strtotime($btime);
    return $some_day;
}

 

相关标签: time