简介

小编在校写微册项目的时候,有一个主页动态,说白了就跟朋友圈差不多,但是到最后做出的效果并不是让我特别满意,因为每一个动态信息的日期显示都是"XXXX-XX-XX XX:XX:XX",字幅太长,所以小编就想到了朋友圈的时间显示样式,如果当天发布的日期跟当前时间作比较,显示“两分钟前”,那就好看多了

函数介绍

小编在这里介绍几个需要用到的底层函数

  • date :返回当前时间的时间戳,格式可以自行设置。
  • strtotime : strtotime() 函数将任何英文文本的日期或时间描述解析为 Unix 时间戳
  • substr(string,start,length):
    • string : 必需。规定要返回其中一部分的字符串。
    • start : 必需。规定在字符串的何处开始。
    • length : 可选。规定要返回的字符串长度。默认是直到字符串的结尾。

计算时间差

$startdate=date('Y-m-d H:i:s');    //当前时间
$enddate="2020-12-12 12:12:12";     //结束时间
$date=floor((strtotime($enddate)-strtotime($startdate))/86400);
echo "相差天数:".$date."天<br><br>";
$hour=floor((strtotime($enddate)-strtotime($startdate))%86400/3600);
echo "相差小时数:".$hour."小时<br><br>";
$minute=floor((strtotime($enddate)-strtotime($startdate))%86400/60);
echo"相差分钟数:".$minute."分钟<br><br>";
$second=floor((strtotime($enddate)-strtotime($startdate))%86400%60);
echo"相差秒数:".$second."秒";

使用 strtotime 转换而来的都是长整形的一个变量,两个长整形的变量就可以做减法啦。

做减法得到的值时秒数,这个秒数对86400(一天的秒数)取余,则得到相差数。如果对86400取模,还对3600秒、60秒取余,则得到相关的小时和分钟数。如果对86400取模,再对60取模,则得到相差的秒数。

这里的取小时数/分钟数,只能在24小时内/60分钟内,因为一天不能超过24个小时,一小时不能超过60分,如果我想取剩余26个小时就不能用这个方法做了

基于微信朋友圈实现时间显示样式

以下这张图片是更改前的数据,时间显示如图所示

定义一个 timer 方法传入指定的数组,代码如下

public function timer(array $array){//获取当前时间 & 时 & 分$today = date('Y-m-d H:i:s');$D = date('d');$H = date('H');$M = date('i');foreach ($array as $key => $value) {$d = substr($value['create_time'], 8, 2);      //获取创建日期:单位:日$h = substr($value['create_time'], 11, 2);     //获取发布创建日期:单位:时$m = substr($value['create_time'], 14, 2);     //获取发布创建日期:单位:时//获取当前时间与发布时间的相差的天数$date = (strtotime($today) - strtotime($value['create_time'])) / 86400;switch ($date) {// date<1 表示时间差在24小时内case $date < 1:if ($D != $d) {  //判断当前日期是否相同,不相同则(24-发布日期+当前时间)$hour = 24 - $h + $H;} else {$hour = abs($H - $h);    //发布如期与当前时间相同则取两数相减的绝对值}if ($hour < 1) {if ($m == $M) {$array[$key]['create_time'] = "刚刚";break;} else if ($m < $M) {$minute = $M - $m;$array[$key]['create_time'] = $minute . "分钟前";break;} else {$minute = 60 - $m + $M;$array[$key]['create_time'] = $minute . "分钟前";break;}} else {$array[$key]['create_time'] = $hour . "小时前";break;}break;case $date < 2:$array[$key]['create_time'] = "昨天";break;case $date < 3:$array[$key]['create_time'] = "两天前";break;default:$array[$key]['create_time'] = $array[$key]['create_time'];break;}}return $array;}

更改好后的时间显示格式如下,是不是就跟朋友圈的时间格式一样啦?
效果如下图‘create_time字段’所示

更改好后的时间显示格式如下,是不是就跟朋友圈的时间格式一样啦?

在这里基于微信朋友圈实现时间显示样式到此结束啦,由于这片文章是在大学时代写的,代码现在自己都看不下去了,哈哈哈哈,等哪天有空了,可以用枚举数据优化一下,在这里就先简单介绍,需要直接引用就行啦,转载注明出处哦~

基于微信朋友圈实现时间显示样式相关推荐

  1. js 类似发微博或者微信朋友圈的时间显示 刚刚 几天前

    /* ** 时间戳显示为多少分钟前,多少天前的处理 ** eg. ** console.log(dateDiff(1411111111111)); // 2014年09月19日 ** console. ...

  2. 一百行代码实现微信朋友圈九宫格图片显示

    前言     很多时候我们都在刷微博或者微信朋友圈的时候都会看到很多图片,而这些图片的显示跟我们平时很多控件的显示方式都不一样,而且,当我们仔细去观察后就会发现,他加载的图片都是根据图片数量动态加载的 ...

  3. sharesdk微信朋友圈分享只显示titile

    在使用sharesdk做分享时发现微信朋友圈只能分享title的内容,text字段的内容不显示,经过几次date的跟踪,发现只需在onekeyshare类的share方法内添加 if("We ...

  4. php 微信朋友圈 更新时间,微信朋友圈可见天数怎么设置

    很多人每天醒来的第一件事不是起床,而是拿起手机打开微信,看看消息记录,浏览一下朋友圈,使用微信已经成为了大家的日常,特别是喜欢看朋友圈,也会经常发朋友圈,有时候不想让好友看到自己朋友圈全部动态的话,还 ...

  5. 朋友圈(类似微信朋友圈)的显示

    我们都知道,朋友圈的图片显示基本是随机的(一张图片时一排显示一张,两张图片时一排显示两张,三张图片时显示三张,超过三张就换行显示),这在很多应用中都经常运用到.这是示例图片 以android stud ...

  6. 仿微信朋友圈 发圈时间展示

    function getformatter($create, $current) {if (date ( "Y", $current ) == date ( "Y&quo ...

  7. 如何实现分享链接到微信朋友圈时显示自定义LOGO以及名称介绍

    当下朋友圈很火,很多企业都将微信朋友圈作为品牌传播的途径,经常会发一些精彩的文章到微信朋友圈供大家自发传播,这样的想法很好,对于优质的内容,网友们也乐于转发与朋友们分享,对品牌宣传与推广确实是有好处的 ...

  8. 如何实现分享网站文章到微信朋友圈时显示指定缩略图或LOGO

    当下朋友圈很火,很多企业都将微信朋友圈作为品牌传播的途径,经常会发一些精彩的文章到微信朋友圈供大家自发传播,这样的想法很好,对于优质的内容,网友们也乐于转发与朋友们分享,对品牌宣传与推广确实是有好处的 ...

  9. android 打开微信好友动态图片,Android GridView仿微信朋友圈显示图片

    最近项目要求上传多图并且多图显示,而且要规则的显示,就像微信朋友圈的图片显示一样. 利用GridView再适合不过了,GridView可以动态加载图片的数量,而且还比较规律,下面说一下自己的思路: 1 ...

  10. 【Android 控件使用及源码解析】 GridView规则显示图片仿微信朋友圈发图片

    今天闲下来想用心写一点东西,发现没什么可写的,就写一下最近项目上用到的一些东西吧.最近项目要求上传多图并且多图显示,而且要规则的显示,就像微信朋友圈的图片显示一样. 想了一下用GridView再适合不 ...

最新文章

  1. to make target ‘../../lib/aaaaa.so‘, needed by ‘ xxx ‘
  2. 紫书搜索 例题7-10 UVA - 11212 Editing a Book 迭代加深搜索 IDA*
  3. 蓝桥杯 ADV-202 算法提高 最长公共子序列
  4. DataGrip按某列大小对数据集进行排序
  5. Linux 的发展历史,设计哲学和一些常用的术语介绍
  6. kk 服务器信息,手机kk服务器设置
  7. daterangepicker双日历插件的使用
  8. Hyper-V Server联机调整虚拟硬盘大小
  9. 《Python Cookbook 3rd》笔记(3.4):二、八、十六进制整数
  10. (10)Vivado 异步时钟约束
  11. 王自如、罗永浩将一起出镜直播带货?罗永浩亲自回应
  12. 4个独立按键实现对数码管数字显示的加减清零等
  13. Cocos2d-js-v3.2 在 mac 上配置环境以及编译到 Andorid 的注意事项(转)
  14. win11文件夹打开延迟怎么办 Windows11文件打开延迟的解决方法
  15. iOS开发那些事-iOS应用本地化-资源文件本地化
  16. 机器学习--组合分类方法之AdaBoost算法
  17. 破解隔壁wifi的实践——网络攻击,抓取握手包,解包
  18. 如何接收谷歌账号的注册短信
  19. 基金男孩女孩的「养基」心碎史
  20. jenkins-RestAPI调用出现Error 403 No valid crumb was included in the request解决方法

热门文章

  1. 使用kaptcha快速生成验证码
  2. matlab怎么求过渡矩阵,求过渡矩阵的方法
  3. win10专业版opnet安装及vs2010环境变量配置
  4. 金蝶kis专业版服务器不显示,金蝶KIS专业版常见问题解决方法
  5. 基于 Roslyn 实现代码动态编译
  6. 74CMS 3.0任意文件写入漏洞
  7. java导出excel水印_springboot为导出的pdf和excel加水印
  8. 为什么局域网需要https加密?如何选择内网SSL证书?
  9. mysql分页查询公式
  10. python调用百度AI语音识别