zoukankan      html  css  js  c++  java
  • php比较全的友好时间显示

    分享一个php友好的比较完成的时间格式化函数,包括‘刚刚’,'几秒之前',‘几分钟前’,'几小时前',几天前,几周前,几个月前等。调用方式很简单,是从ThinkSNS 里面拿出来的。

     1 /**
     2  * 友好的时间显示
     3  *
     4  * @param int    $sTime 待显示的时间
     5  * @param string $type  类型. normal | mohu | full | ymd | other
     6  * @param string $alt   已失效
     7  * @return string
     8  */
     9 function friendlyDate($sTime,$type = 'normal',$alt = 'false') {
    10     if (!$sTime)
    11         return '';
    12     //sTime=源时间,cTime=当前时间,dTime=时间差
    13     $cTime      =   time();
    14     $dTime      =   $cTime - $sTime;
    15     $dDay       =   intval(date("z",$cTime)) - intval(date("z",$sTime));
    16     //$dDay     =   intval($dTime/3600/24);
    17     $dYear      =   intval(date("Y",$cTime)) - intval(date("Y",$sTime));
    18     //normal:n秒前,n分钟前,n小时前,日期
    19     if($type=='normal'){
    20         if( $dTime < 60 ){
    21             if($dTime < 10){
    22                 return '刚刚';    //by yangjs
    23             }else{
    24                 return intval(floor($dTime / 10) * 10)."秒前";
    25             }
    26         }elseif( $dTime < 3600 ){
    27             return intval($dTime/60)."分钟前";
    28         //今天的数据.年份相同.日期相同.
    29         }elseif( $dYear==0 && $dDay == 0  ){
    30             //return intval($dTime/3600)."小时前";
    31             return '今天'.date('H:i',$sTime);
    32         }elseif($dYear==0){
    33             return date("m月d日 H:i",$sTime);
    34         }else{
    35             return date("Y-m-d H:i",$sTime);
    36         }
    37     }elseif($type=='mohu'){
    38         if( $dTime < 60 ){
    39             return $dTime."秒前";
    40         }elseif( $dTime < 3600 ){
    41             return intval($dTime/60)."分钟前";
    42         }elseif( $dTime >= 3600 && $dDay == 0  ){
    43             return intval($dTime/3600)."小时前";
    44         }elseif( $dDay > 0 && $dDay<=7 ){
    45             return intval($dDay)."天前";
    46         }elseif( $dDay > 7 &&  $dDay <= 30 ){
    47             return intval($dDay/7) . '周前';
    48         }elseif( $dDay > 30 ){
    49             return intval($dDay/30) . '个月前';
    50         }
    51     //full: Y-m-d , H:i:s
    52     }elseif($type=='full'){
    53         return date("Y-m-d , H:i:s",$sTime);
    54     }elseif($type=='ymd'){
    55         return date("Y-m-d",$sTime);
    56     }else{
    57         if( $dTime < 60 ){
    58             return $dTime."秒前";
    59         }elseif( $dTime < 3600 ){
    60             return intval($dTime/60)."分钟前";
    61         }elseif( $dTime >= 3600 && $dDay == 0  ){
    62             return intval($dTime/3600)."小时前";
    63         }elseif($dYear==0){
    64             return date("Y-m-d H:i:s",$sTime);
    65         }else{
    66             return date("Y-m-d H:i:s",$sTime);
    67         }
    68     }
    69 }


    /**
    * 友好的时间显示
    *
    * @param int $sTime 待显示的时间
    * @param string $type 类型. normal | mohu | 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=='mohu'){
    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);
    }
    }
    }

  • 相关阅读:
    跟我学习编写通用的单据编码生成器
    asp.net MVC 框架中控制器里使用Newtonsoft.Json对前端传过来的字符串进行解析
    c#语言中的Process进程类型的使用示例
    C#语言中的XmlSerializer类的XmlSerializer.Deserialize (Stream)方法举例详解
    C#语言中的XmlSerializer类的XmlSerializer.Serialize(Stream,Object)方法举例详解
    大型三甲医院管理系统源码PACS超声科室源码DICOM影像工作站
    大型EMR电子病历源码三甲医院医疗信息管理系统软件网络版
    大型三甲医院信息管理系统源码 His系统功能齐全 完整可用
    大型三甲医院医疗体检信息管理系统源码 PEIS 体检科软件 CS
    大型进销存管理系统源码 家电业 电器类进销存 asp.net C#框架
  • 原文地址:https://www.cnblogs.com/zqifa/p/php-date-1.html
Copyright © 2011-2022 走看看