php时间戳格式化显示友好的时间函数分享

在项目中时间一律显示为2014-10-20 10:22显得很呆板。在微博、QQ空间等网站通常会显示为几秒前,几分钟前,几小时前等容易阅读的时间,我们称之为友好的时间格式。那么用php怎么实现呢?

大体思路如下:

如果是跨年并且大于3天就显示为具体的时间

如果是今天的
 
        如果是一分钟内则显示几秒之前
 
        如果是一小时内则显示几分钟前
 
        如果是当天且大于一小时则显示为几小时前

如果是昨天则显示为昨天几点

如果是前天则显示为前天几点

如果大于三天(没有跨年)则显示为几月几号

根据以上思路就不难写出实现代码了:

实现代码如下:

代码如下:

//格式化友好显示时间
function formatTime($time){
    $now=time();
    $day=date('Y-m-d',$time);
    $today=date('Y-m-d');
   
    $dayArr=explode('-',$day);
    $todayArr=explode('-',$today);
   
    //距离的天数,这种方法超过30天则不一定准确,但是30天内是准确的,因为一个月可能是30天也可能是31天
    $days=($todayArr[0]-$dayArr[0])*365+(($todayArr[1]-$dayArr[1])*30)+($todayArr[2]-$dayArr[2]);
    //距离的秒数
    $secs=$now-$time;
   
    if($todayArr[0]-$dayArr[0]>0 && $days>3){//跨年且超过3天
        return date('Y-m-d',$time);
    }else{
   
        if($days<1){//今天
            if($secs<60)return $secs.'秒前';
            elseif($secs<3600)return floor($secs/60)."分钟前";
            else return floor($secs/3600)."小时前";
        }else if($days<2){//昨天
            $hour=date('h',$time);
            return "昨天".$hour.'点';
        }elseif($days<3){//前天
            $hour=date('h',$time);
            return "前天".$hour.'点';
        }else{//三天前
            return date('m月d号',$time);
        }
    }
}

仅供参考,欢迎批评指正或者提供更好的方法。

(0)

相关推荐

  • php格式化时间戳

    CMS中一般显示时间比较新的文章需要显示几分钟前,几天前这样,但是一般数据库里面记录的都是时间戳(至少我习惯这样),所以就需要一个转化的过程,根据网上的资料加上自己的修改整理封装了两段代码 下面是封装好的方法 function formatTime($time) { $time = (int) substr($time, 0, 10); $int = time() - $time; $str = ''; if ($int <= 2){ $str = sprintf('刚刚', $int); }e

  • PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)

    写过PHP+MySQL的程序员都知道有时间差,UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储.处理方便,但是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么自如,所以有的时候需要互相转换,下面给出互相转换的几种转换方式. 一.在MySQL中完成 这种方式在MySQL查询语句中转换,优点是不占用PHP解析器的解析时间,速度快,缺点是只能用在数据库查询中,有局限性. 1. UNIX时间戳转换为日期用函数: FROM_UNIXTIME() 一般形式:selec

  • php格式化时间戳显示友好的时间实现思路及代码

    在项目中时间一律显示为2014-10-20 10:22显得很呆板.在微博.QQ空间等网站通常会显示为几秒前,几分钟前,几小时前等容易阅读的时间,我们称之为友好的时间格式.那么用php怎么实现呢? 大体思路如下: 如果是跨年并且大于3天就显示为具体的时间 如果是今天的 如果是一分钟内则显示几秒之前 如果是一小时内则显示几分钟前 如果是当天且大于一小时则显示为几小时前 如果是昨天则显示为昨天几点 如果是前天则显示为前天几点 如果大于三天(没有跨年)则显示为几月几号 根据以上思路就不难写出实现代码了:

  • php时间戳格式化显示友好的时间函数分享

    在项目中时间一律显示为2014-10-20 10:22显得很呆板.在微博.QQ空间等网站通常会显示为几秒前,几分钟前,几小时前等容易阅读的时间,我们称之为友好的时间格式.那么用php怎么实现呢? 大体思路如下: 如果是跨年并且大于3天就显示为具体的时间 如果是今天的           如果是一分钟内则显示几秒之前           如果是一小时内则显示几分钟前           如果是当天且大于一小时则显示为几小时前 如果是昨天则显示为昨天几点 如果是前天则显示为前天几点 如果大于三天(没

  • PHP实现浏览器格式化显示XML的方法示例

    本文实例讲述了PHP实现浏览器格式化显示XML的方法.分享给大家供大家参考,具体如下: 在头部加上 header("Content-type: application/xml"); 刚开始加上了发现还是不行.最近一直尝试最后终于找到解决办法.在代码最后加上exit;就可以了 $Dom = new \DOMDocument('1.0', 'utf-8'); $paper = $Dom->createElement('paper'); $Dom->appendChild($pa

  • PHP格式化显示时间date()函数案例讲解

    date("yyyyMMdd",time())  date() 函数 功能:用于格式化时间,返回一个字符串.  语法:string date( string format [, int timestamp] ),其中参数 format 表示时间格式化的方式:可选参数timestamp表示时间戳,默认为time(),即当前时间. 格式化方式 说明 Y 4位数字年,y为2位数字,如99即1999年 m 数字月份,前面有前导0,如01.n 为无前导0数字月份 F 月份,完整的文本格式,例如

  • PHP格式化显示时间date()函数代码

    PHP Date/Time 简介 Date/Time 函数允许您从 PHP 脚本运行的服务器上获取日期和时间.您可以使用 Date/Time 函数通过不同的方式来格式化日期和时间. 注释:这些函数依赖于服务器的本地设置.使用这些函数时请记住要考虑夏令时和闰年. 安装 PHP Date/Time 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. Runtime 配置 Date/Time 函数的行为受到 php.ini 中设置的影响: 名称 描述 默认 PHP 版本 date.timezo

  • mysql时间戳格式化函数from_unixtime使用的简单说明

    我们一般使用字段类型int(11)时间戳来保存时间,这样方便查询时提高效率.但这样有个缺点,显示的时间戳,很难知道真实日期时间. mysql提供了一个时间戳格式化函数from_unixtime来转换格式 from_unxitime语法说明: from_unixtime(unix_timestamp, format) 返回Unix时间标记的一个字符串,根据format格式化.如果format为空默认会使用%Y-%m-%d %H:%i:%s的格式 例如: mysql> select from_uni

  • js友好的时间返回函数

    本文实例为大家分享了js显示友好时间的函数代码,供大家参考,具体内容如下 //友好的时间返回函数(如:10分钟前)time_stamp为UNIX秒数 function friendly_time(time_stamp) { var now_d = new Date(); var now_time = now_d.getTime() / 1000; //获取当前时间的秒数 var f_d = new Date(); f_d.setTime(time_stamp * 1000); var f_tim

  • C语言 strftime 格式化显示日期时间的实现

    C/C++程序中需要程序显示当前时间,可以使用标准函数strftime. 函数原型:size_t strftime (char* ptr, size_t maxsize, const char* format,const struct tm* timeptr ); 代码示例: #include <stdio.h> #include <time.h> int main () { time_t rawtime; struct tm * timeinfo; char buffer [12

  • JavaScript日期时间与时间戳的转换函数分享

    如果只是将当前时间转成时间戳,可以直接使用new Date().getTime()/1000:但如果是将某个具体时间或日期转成Unix时间戳,ie不支持像new Date("2013-1-1")  这样带参数的方法,将返回NaN. 对此,我写了以下函数,支持ie6+,谷歌,火狐等浏览器: 复制代码 代码如下: function getTime(day){  re = /(\d{4})(?:-(\d{1,2})(?:-(\d{1,2}))?)?(?:\s+(\d{1,2}):(\d{1,

  • python 实现仿微信聊天时间格式化显示的代码

    时间格式化所使用的算法为: """ 1.如果不在同一年 '%Y年%m月%d日' 2.如果在同一年 2.1 如果在同一个月 2.1.1 如果在同一天 '%H:%M' 2.1.2 如果是昨天 '昨天 %H:%M' 2.1.2 如果在同一周 '周x 00:00' 去除周日 的情况 2.2 否则 '%m月%d日 %H:%M' """ 具体的python代码如下: def fmtdt_str(dtstr, fmt): result = "&quo

随机推荐