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+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格式化时间戳

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

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

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

  • javascript中打印当前的时间实现思路及代码

    复制代码 代码如下: <html> <head> <title></title> <script> /* //声明时间 var date = new Date(); alert(date);//当前时间 alert(date.toLocaleString());//转化为本地时间 alert(date.getFullYear());//显示年份 alert(date.getMonth() + 1);//显示月份 0-11,需要加1 alert(d

  • JS根据Unix时间戳显示发布时间是多久前【项目实测】

    后台接口给的时间数据为Unix时间戳,我们的需求是显示类似微信朋友圈显示发布时间为距离当前时间多久之前,"xx分钟之前","xx小时之前","xx个月之前". 类似这样的时间显示效果: 转换函数: /** * Unix时间戳转换为当前时间多久之前 * @param timespan int Unix时间戳 * @return timeSpanStr string 转换之后的前台需要的字符串 */ function Ftime (timespan)

  • Vue filter格式化时间戳时间成标准日期格式的方法

    调用实例:yyyy-MM-dd或者yyyy-MM-dd hh:mm:ss进行格式 <div>{{data | dataFormat('yyyy-MM-dd hh:mm:ss')}}</div> 代码: import Vue from 'vue' Vue.filter('dataFormat', function (value, fmt) { let getDate = new Date(value); let o = { 'M+': getDate.getMonth() + 1,

  • 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

  • 如何让history命令显示日期和时间

    我们都对 history 命令很熟悉.它将终端上 bash 执行过的所有命令存储到 .bash_history 文件中,来帮助我们复查用户之前执行过的命令. 默认情况下 history 命令直接显示用户执行的命令而不会输出运行命令时的日期和时间,即使 history 命令记录了这个时间. 运行 history 命令时,它会检查一个叫做 HISTTIMEFORMAT 的环境变量,这个环境变量指明了如何格式化输出 history 命令中记录的这个时间. 若该值为 null 或者根本没有设置,则它跟大

  • JS使用Date对象实时显示当前系统时间简单示例

    本文实例讲述了JS使用Date对象实时显示当前系统时间的方法.分享给大家供大家参考,具体如下: JS中包含Date对象,其提供了一些方法获取系统日期,直接上代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>www.jb51.net 获取系统时间</title> <script language="JavaScript&

  • vue中根据时间戳判断对应的时间(今天 昨天 前天)

    根据时间戳 来显示对应的时间段 本文是根据vue缩写,但是原理都是想通的 根据一个时间戳,然后来显示对应的时间段.如果为今天,则显示对应的time,如果为昨天,则显示为昨天,如果为前天,则显示为前天.剩下的显示为对应的日期 需求定义好了,然后开始实现: 首先,是把时间戳转换为对应的时间格式,js提供了原生的获取对应年.月.日等格式的方法,但是不够灵活,这里提供了一个网上找的比较灵活获取固定格式的函数. const formatDate = (date, fmt) => { date = new

  • python time模块时间戳 与 结构化时间详解

    目录 time模块 1. 时间戳 1.1 time.time() 1.2 时间戳 转 字符串 2. 结构化时间 2.1 本地时间 2.2 格林威治时间(零时区) 2.3 结构化时间 转 字符串 2.4 字符串 转 结构化时间 2.5 结构化数据的属性 2.6 结构化时间 转 时间戳 time模块 1:概述 时间表示的分类 时间戳 格式化的时间字符串 结构化时间 时间戳:时间戳表示的是从1970年1月1日整0点到目前秒的偏移量,数据类型是浮点型,主要用来让计算机看的 格式化的时间字符串:如 201

随机推荐