php时间戳格式化显示友好的时间函数分享_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);
        }
    }
}

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

时间: 2024-12-21 19:10:31

php时间戳格式化显示友好的时间函数分享_php实例的相关文章

php实现的太平洋时间和北京时间互转的自定义函数分享_php实例

没有什么好说的了,直接上代码吧: /** * 太平洋时间转北京时间 */ public function pacificToPRC($time=''){ date_default_timezone_set('Pacific/Apia'); if(empty($time)){ $time = time(); } date_default_timezone_set('Asia/Shanghai'); $date = date('Y-m-d H:i:s',$time); $time = strtoti

php计算2个日期的差值函数分享_php实例

非常简单实用的函数分享给大家, 奉上代码: 复制代码 代码如下: /**      *    日期-计算2个日期的差值      *  @return int      */     public function get_difference($date, $new_date) {         $date = strtotime($date);         $new_date = strtotime($new_date);         return abs(ceil(($date

php格式化金额函数分享_php实例

最近的项目在处理资金这一块的功能,对人民币金额的格式化输出是必不可少的功能.这个功能比较独立而且还比较大众化,所以封装成了函数就发上去也算是方便大家. 复制代码 代码如下: /**  * 格式化金额  *  * @param int $money  * @param int $len  * @param string $sign  * @return string  */ function format_money($money, $len=2, $sign='¥'){     $negativ

php强制文件下载而非在浏览器打开的自定义函数分享_php实例

有时我们希望如图片.文本文档.网页.mp3.pdf等内容,当点击对应链接时直接下载,而不是在网页上显示,那么就需要强制设置header头信息.以下为一段不会产生乱码的php函数实现代码,其他程序语言也可参考之编写实现. 复制代码 代码如下: /** * Downloader * * @param $archivo *  path al archivo * @param $downloadfilename *  (null|string) el nombre que queres usar par

PHP实现生成透明背景的PNG缩略图函数分享_php实例

之前在WEB开发笔记写过一个PHP生成缩略图的函数,虽然那个函数能够生成缩略图,但是有一定的缺陷,在生成PNG缩略图的时候,背景是黑色,今天又写了一个函数来弥补一下.代码很简单,就是imagealphablending($thumb,false);与imagesavealpha($thumb,true);很重要.主要就是把PNG的alpha值保存,不要丢失而已. 函数如下: <?PHP /* *$sourePic:原图路径 * $smallFileName:小图名称 * $width:小图宽 *

2个比较经典的PHP加密解密函数分享_php实例

项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理. 最常见的应用在用户登录以及一些API数据交换的场景. 笔者收录了一些比较经典的PHP加密解密函数代码,分享给大家.加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果.1.非常给力的authcode加密函数,Discuz!经典代码(带详解): 复制代码 代码如下: function authcode(

IIS6.0 开启Gzip方法及PHP Gzip函数分享_php实例

IIS 的 GZIP 压缩                                                                        1.首先备份 IIS 的配置文件, 复制 C:\Windows\system32\inetsrv\metabase.xml到另外的备份文件夹中.   C:\Windows\system32\inetsrv\metabase.xml是 IIS 的核心配置文件,该文件的完整性一但被破坏,IIS 将无法正常运行,严重到需要重新安装系统

PHP二维数组排序的3种方法和自定义函数分享_php实例

关于排序一般我们都是通过数据库或者nosql(eg:redis)先排好序然后输出到程序里直接使用,但是有些时候我们需要通过PHP直接来对数组进行排序,而在PHP里存储数据用到最多的就是对象和数组,但处理较多的就是数组,因为有非常丰富的内置函数库(其实对象一定程度上也可以理解为是数组),这些函数库很大程度上可以帮助我们实现某些功能.常用的系统函数有sort.asort.arsort.ksort.krsort等等,这里我主要说下对二维数组的排序,两种方法: 一.用PHP自带array_multiso

完美的2个php检测字符串是否是utf-8编码函数分享_php实例

在php开发中有时候会用到转码函数,比如iconv(),mb_convert_encoding()函数,在用函数转码的时候或者解码的时候我们有时候需要先判断当前字符串编码类型,不如是否是utf-8编码,是的话然后进行编码转换等操作.下面是小编整理的目前web开发中网上使用率比较高的.好的php关于UTF-8编码的判断函数,代码如下: function is_utf8($string) //函数一 { // From http://w3.org/International/questions/qa