首页 > 语言 > PHP > 正文

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

2024-09-04 11:45:30
字体:
来源:转载
供稿:网友

时间戳是我们在时间日期对比时常用到一个小功能,下面我先来给各位介绍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”)

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. function mdate($time = NULL) { 
  2.     $text = ''
  3.     $time = $time === NULL || $time > time() ? time() : intval($time); 
  4.     $t = time() - $time//时间差 (秒) 
  5.     $y = date('Y'$time)-date('Y', time());//是否跨年 
  6.     switch($t){ 
  7.      case $t == 0: 
  8.        $text = '刚刚'
  9.        break
  10.      case $t < 60: 
  11.       $text = $t . '秒前'// 一分钟内 
  12.       break
  13.      case $t < 60 * 60: 
  14.       $text = floor($t / 60) . '分钟前'//一小时内 
  15.       break
  16.      case $t < 60 * 60 * 24: 
  17.       $text = floor($t / (60 * 60)) . '小时前'// 一天内 
  18.       break
  19.      case $t < 60 * 60 * 24 * 3: 
  20.       $text = floor($time/(60*60*24)) ==1 ?'昨天 ' . date('H:i'$time) : '前天 ' . date('H:i'$time) ; //昨天和前天 
  21.       break
  22.      case $t < 60 * 60 * 24 * 30: 
  23.       $text = date('m月d日 H:i'$time); //一个月内 
  24.       break
  25.      case $t < 60 * 60 * 24 * 365&&$y==0: 
  26.       $text = date('m月d日'$time); //一年内 
  27.       break
  28.      default
  29.       $text = date('Y年m月d日'$time); //一年以前 
  30.       break;  
  31.     } 
  32.          
  33.     return $text

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

{$vo.time|mdate}

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

  1. function formatDate($sTime) { 
  2.  //sTime=源时间,cTime=当前时间,dTime=时间差 
  3.  $cTime  = time(); 
  4.  $dTime  = $cTime - $sTime
  5.  $dDay  = intval(date("Ymd",$cTime)) - intval(date("Ymd",$sTime)); 
  6.  $dYear  = intval(date("Y",$cTime)) - intval(date("Y",$sTime)); 
  7.  if$dTime < 60 ){ 
  8.   $dTime =  $dTime."秒前"
  9.  }elseif$dTime < 3600 ){ 
  10.   $dTime =  intval($dTime/60)."分钟前"
  11.  }elseif$dTime >= 3600 && $dDay == 0  ){ 
  12.   $dTime =  "今天".date("H:i",$sTime); 
  13.  }elseif($dYear==0){ 
  14.   $dTime =  date("m-d H:i",$sTime); 
  15.  }else
  16.   $dTime =  date("Y-m-d H:i",$sTime); 
  17.  } 
  18.  return $dTime

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表