php-time

作者: 若初_终点 | 来源:发表于2020-04-04 10:51 被阅读0次

time应用

-----------------------------------------------------------------------------------------------------------------------------------------
时间
-----------------------------------------------------------------------------------------------------------------------------------------
设置时区

date_default_timezone_set("Etc/GMT");//这是格林威治标准时间,得到的时间和默认时区是一样的

date_default_timezone_set("Etc/GMT+8");//这里比林威治标准时间慢8小时

date_default_timezone_set("Etc/GMT-8");//这里比林威治标准时间快8小时

date_default_timezone_set('PRC'); //设置中国时区

date_default_timezone_set("Etc/GMT-8");//设置当前时区为-8  东8区   北京/上海时间
-----------------------------------------------------------------------------------------------------------------------------------------
date();
strtotime("-1 month");上个月时间戳
$date = date("Y-m-d H:i:s",time());//unix时间戳转换为日期格式
//获取毫秒时间戳
list($s1, $s2) = explode(' ', microtime());
$date = (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);

microtime(true);//毫秒时间1505455975.264
//时间带毫秒
list($millisecond, $second) = explode(' ', microtime());
$milli_time =  (float)sprintf('%.0f', (floatval($millisecond) + floatval($second)) * 1000);
$ts = date('YmdHis').substr($milli_time, -3);
return $ts;

//毫秒转化日期
$utimestamp = '1505455975.264';
$timestamp = floor($utimestamp);
$milliseconds = round(($utimestamp - $timestamp) * 1000000);
date(preg_replace('`(?<!\\\\)u`', $milliseconds, 'Y-m-d H:i:s.u'), $timestamp);

例:$monthtime = date("m", $value['word_time']);//时间月
例:$daytime = date("d", $value['word_time']);//时间日
例:获得时间是周几
$wtime = date("w", time());//时间周几
switch ($wtime){
        case 0:
            $week = '周日';
            break;
        case 1:
            $week = '周一';
            break;
        case 2:
            $week = '周二';
            break;
        case 3:
            $week = '周三';
            break;
        case 4:
            $week = '周四';
            break;
        case 5:
            $week = '周五';
            break;
        case 6:
            $week = '周六';
            break;
    }
echo $week;

第一个参数的格式分别表示:

a - "am" 或是 "pm"

A - "AM" 或是 "PM"

d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"

D - 星期几,三个英文字母; 如: "Fri"

F - 月份,英文全名; 如: "January"

h - 12 小时制的小时; 如: "01" 至 "12"

H - 24 小时制的小时; 如: "00" 至 "23"

g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"

G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"

i - 分钟; 如: "00" 至 "59"

j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31"

l - 星期几,英文全名; 如: "Friday"

m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"

n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"

M - 月份,三个英文字母; 如: "Jan"

s - 秒; 如: "00" 至 "59"

S - 字尾加英文序数,二个英文字母; 如: "th","nd"

t - 指定月份的天数; 如: "28" 至 "31"

U - 总秒数

w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)

Y - 年,四位数字; 如: "1999"

y - 年,二位数字; 如: "99"

z - 一年中的第几天; 如: "0" 至 "365"


/**
 * 时间显示
 * @param $time unix时间
 * @return bool|string
 */
function friend_date($time)
{
    if (!$time)
        return false;
    $fdate = '';
    $d = time() - intval($time);
    $ld = $time - mktime(0, 0, 0, 0, 0, date('Y')); //得出年
    $md = $time - mktime(0, 0, 0, date('m'), 0, date('Y')); //得出月
    $byd = $time - mktime(0, 0, 0, date('m'), date('d') - 2, date('Y')); //前天
    $yd = $time - mktime(0, 0, 0, date('m'), date('d') - 1, date('Y')); //昨天
    $dd = $time - mktime(0, 0, 0, date('m'), date('d'), date('Y')); //今天
    $td = $time - mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')); //明天
    $atd = $time - mktime(0, 0, 0, date('m'), date('d') + 2, date('Y')); //后天
    if ($d == 0) {
        $fdate = '刚刚';
    } else {
        switch ($d) {
            case $d < $atd:
                $fdate = date('Y年m月d日', $time);
                break;
            case $d < $td:
                $fdate = '后天' . date('H:i', $time);
                break;
            case $d < 0:
                $fdate = '明天' . date('H:i', $time);
                break;
            case $d < 60:
                $fdate = $d . '秒前';
                break;
            case $d < 3600:
                $fdate = floor($d / 60) . '分钟前';
                break;
            case $d < $dd:
                $fdate = floor($d / 3600) . '小时前';
                break;
            case $d < $yd:
                $fdate = '昨天' . date('H:i', $time);
                break;
            case $d < $byd:
                $fdate = '前天' . date('H:i', $time);
                break;
            case $d < $md:
                $fdate = date('m月d日 H:i', $time);
                break;
            case $d < $ld:
                $fdate = date('m月d日', $time);
                break;
            default:
                $fdate = date('Y年m月d日', $time);
                break;
        }
    }
    return $fdate;
}



/**
 * 友好的时间显示
 *
 * @param int    $sTime 待显示的时间
 * @param string $type  类型. normal正常 | fuzzy模糊 | full完整 | ymd 年月日| other
 * @param string $alt   已失效
 * @return 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 H:i",$sTime);
        }
    }elseif($type=='fuzzy'){
        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);
        }
    }
}




//上个月时间戳
$thismonth = date('m');
$thisyear = date('Y');
if ($thismonth == 1) {
    $lastmonth = 12;
    $lastyear = $thisyear - 1;
} else {
    $lastmonth = $thismonth - 1;
    $lastyear = $thisyear;
}
$lastStartDay = $lastyear . '-' . $lastmonth . '-1';
$lastEndDay = $lastyear . '-' . $lastmonth . '-' . date('t', strtotime($lastStartDay));
$b_time = strtotime($lastStartDay);//上个月的月初时间戳
$e_time = strtotime($lastEndDay);//上个月的月末时间戳






//获得当日凌晨的时间戳  
  
$today = strtotime(date("Y-m-d"),time());
$today = strtotime(date('Y-m-d',$time),time());//获得相应日期凌晨的时间戳
//当天的24点时间戳  
  
$end = $today+60*60*24; 


//把秒数转换为时长(h:i:s格式)
$result = '00:00:00';  
if ($times>0) {  
        $hour = floor($times/3600);  
        $minute = floor(($times-3600 * $hour)/60);  
        $second = floor((($times-3600 * $hour) - 60 * $minute) % 60);  
        $result = $hour.':'.$minute.':'.$second;  
}  
return $result; 

-----------------------------------------------------------------------------------------------------------------------------------------

相关文章

网友评论

      本文标题:php-time

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