好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP时间戳函数,几分钟、几小时前、几天前等 -

PHP时间戳函数,几分钟、几小时前、几天前等

时间戳是我们在时间日期对比时常用到一个小功能,下面我先来给各位介绍strtotime时间戳转换的一些方法与利用它来做一个日期格式化的几分钟、几小时前、几天前的一个实例.

1.PHP时间戳函数将日期转化为unix时间戳.

echo "时间戳为:".strtotime("2012-12-21")

2.将时间戳转化为系统时间.

date('Y-m-d H:i:s',"1228348800");

3.PHP时间戳函数获取英文文本日期时间 示例如下:

便于比较,使用date将当时间戳与指定时间戳转换成系统时间.

(1)打印明天此时的时间戳strtotime(]+1 day])

//当前时间   echo   date ( "Y-m-d H:i:s" ,time());  //明天此时时间   echo   date ( "Y-m-d H:i:s" , strtotime ( "+1 day" )); 

(2)打印昨天此时的时间戳strtotime(]-1 day])

//当前时间   echo   date ( "Y-m-d H:i:s" ,time()) ;  //指定时间   echo   date ( "Y-m-d H:i:s" , strtotime ( "-1 day" )); 

(3)打印下个星期此时的时间戳strtotime("+1 week")

//当前时间   echo   date ( "Y-m-d H:i:s" ,time());  //下星期时间   echo   date ( "Y-m-d H:i:s" , strtotime ( "+1 week" )); 

(4)打印上个星期此时的时间戳strtotime("-1 week")

//当前时间   echo   date ( "Y-m-d H:i:s" ,time());  //上个星期此时时间   echo   date ( "Y-m-d H:i:s" , strtotime ( "-1 week" )); 

(5)打印指定下星期几的时间戳strtotime("next Thursday")

//当前时间   echo   date ( "Y-m-d H:i:s" ,time());  //下星期几时间   echo   date ( "Y-m-d H:i:s" , strtotime ( "next Thursday" ));  

(6)打印指定上星期几的时间戳strtotime(]last Thursday])

//当前时间   echo   date ( "Y-m-d H:i:s" ,time());  //指定时间   echo   date ( "Y-m-d H:i:s" , strtotime ( "last Thursday" )); 

以上PHP时间戳函数示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间.

话说看到别人写的这么一个函数,测试了一下,有些小毛病,对于跨年日期,没有显示年份,修改如下.

function  mdate( $time  = NULL) {       $text  =  '' ;       $time  =  $time  === NULL ||  $time  > time() ? time() :  intval ( $time );       $t  = time() -  $time ;  //时间差 (秒)        $y  =  date ( 'Y' ,  $time )- date ( 'Y' , time()); //是否跨年        switch ( $t ){        case   $t  == 0:          $text  =  '刚刚' ;          break ;        case   $t  < 60:         $text  =  $t  .  '秒前' ;  // 一分钟内          break ;        case   $t  < 60 * 60:         $text  =  floor ( $t  / 60) .  '分钟前' ;  //一小时内          break ;        case   $t  < 60 * 60 * 24:         $text  =  floor ( $t  / (60 * 60)) .  '小时前' ;  // 一天内          break ;        case   $t  < 60 * 60 * 24 * 3:         $text  =  floor ( $time /(60*60*24)) ==1 ? '昨天 '  .  date ( 'H:i' ,  $time ) :  '前天 '  .  date ( 'H:i' ,  $time ) ;  //昨天和前天          break ;        case   $t  < 60 * 60 * 24 * 30:         $text  =  date ( 'm月d日 H:i' ,  $time );  //一个月内          break ;        case   $t  < 60 * 60 * 24 * 365&& $y ==0:         $text  =  date ( 'm月d日' ,  $time );  //一年内          break ;        default :         $text  =  date ( 'Y年m月d日' ,  $time );  //一年以前          break ;       }                 return   $text ;  } 

ThinkPHP中:将写好的函数放到 Common 文件夹下,系统会自动加载的,放到这个common.php页里,common.php 固有格式,不要改名,模板中直接调用,代码如下:

{$vo.time|mdate}

例2,简单一些的代码如下:

function  formatDate( $sTime ) {    //sTime=源时间,cTime=当前时间,dTime=时间差     $cTime   = time();    $dTime   =  $cTime  -  $sTime ;    $dDay   =  intval ( date ( "Ymd" , $cTime )) -  intval ( date ( "Ymd" , $sTime ));    $dYear   =  intval ( date ( "Y" , $cTime )) -  intval ( date ( "Y" , $sTime ));    if (  $dTime  < 60 ){     $dTime  =   $dTime . "秒前" ;   } elseif (  $dTime  < 3600 ){     $dTime  =   intval ( $dTime /60). "分钟前" ;   } elseif (  $dTime  >= 3600 &&  $dDay  == 0  ){     $dTime  =   "今天" . date ( "H:i" , $sTime );   } elseif ( $dYear ==0){     $dTime  =   date ( "m-d H:i" , $sTime );   } else {     $dTime  =   date ( "Y-m-d H:i" , $sTime );   }    return   $dTime ;  } 

查看更多关于PHP时间戳函数,几分钟、几小时前、几天前等 -的详细内容...

  阅读:69次