PHP友好的时间显示

Wesley13
• 阅读 491

完全逻辑代码

/**
 * 友好的时间展示
 * @param int $time 时间戳
 * @param string $format 默认显示格式化方式
 * @return string 返回时间,错误时返回为空字符串
 */
function diy_friend_date($time, $format='Y-m-d')
{
    if (!$time)
        return '';

    $nowtime = time();
    if ($time > $nowtime){
        return date($format, $time);
    }

    $Y = date('Y', $time);//年份
    $z = date('z', $time);//当前的第几天
    $nowY = date('Y', $nowtime);
    $nowz = date('z', $nowtime);

    if ($z > $nowz){
        $nowz += 365;
    }
    $diffz = $nowz - $z;//获取差异天
    $diffs = $nowtime - $time;//获取差异秒

        if ($diffz >= 365){
            return ($nowY-$Y).'年前';
        } elseif ($diffz >= 30){
            return floor($diffz / 30).'个月前';
        } elseif ($diffz >= 7){
            return floor($diffz / 7).'个星期前';
        } elseif ($diffz >= 3){
            return $diffz.'天前';
        } elseif ($diffz >= 2){
            return '前天';
        } elseif ($diffz >= 1) {
            return '昨天';
        } elseif ($diffs >= 3600) {
            return floor($diffs / 3600).'小时前';
        } elseif ($diffs >= 300) {
            return floor($diffs / 60).'分钟前';
        } else {//五分钟内
            return '刚刚'.$diffs.'秒';
        }
}

频繁更新的网站,这样可能效率不高,可以二分或者三分,减少if判断次数,自己根据情况判断

/**
 * 友好的时间展示
 * @param int $time 时间戳
 * @param string $format 默认显示格式化方式
 * @return string 返回时间,错误时返回为空字符串
 */
function diy_friend_date($time, $format='Y-m-d')
{
    if (!$time)
        return '';

    $nowtime = time();
    if ($time > $nowtime){
        return date($format, $time);
    }

    $Y = date('Y', $time);//年份
    $z = date('z', $time);//当前的第几天
    $nowY = date('Y', $nowtime);
    $nowz = date('z', $nowtime);

    if ($z > $nowz){
        $nowz += 365;
    }
    $diffz = $nowz - $z;//获取差异天
    $diffs = $nowtime - $time;//获取差异秒

    if ($diffz <= 7){
        if ($diffz >= 3){
            return $diffz.'天前';
        } elseif ($diffz >= 2){
            return '前天';
        } elseif ($diffz >= 1) {
            return '昨天';
        } elseif ($diffs >= 3600) {
            return floor($diffs / 3600).'小时前';
        } elseif ($diffs >= 300) {
            return floor($diffs / 60).'分钟前';
        } else {//五分钟内
            return '刚刚'.$diffs.'秒';
        }
    } else {
        if ($diffz >= 365){
            return ($nowY-$Y).'年前';
        } elseif ($diffz >= 30){
            return floor($diffz / 30).'个月前';
        //} elseif ($diffz >= 7){
        } else{
            return floor($diffz / 7).'个星期前';
        }
    }

}
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
2年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Wesley13 Wesley13
2年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Stella981 Stella981
2年前
Django之Django模板
1、问:html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,比如数据库字段内容为2012082616:00:00,但是页面显示的却是Aug.26,2012,4p.m.答:为了页面和数据库中显示一致,需要在页面格式化时间,需要添加<td{{dayrecord.p\_time|date:
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
2年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
2年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
2年前
Python time模块 返回格式化时间
常用命令  strftimetime.strftime("%Y%m%d%H:%M:%S",formattime)第二个参数为可选参数,不填第二个参数则返回格式化后的当前时间日期201812112:00:00time.strftime('%H:%M:%S')返回当前时间的时分秒time.strftim
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_