ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【黄啊码】微信朋友圈的几分钟/几小时前如何实现

2022-03-11 12:02:15  阅读:291  来源: 互联网

标签:60 秒数 微信 strtotime date 朋友圈 几小时 enddate 86400


函数介绍

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

  • 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;
    }

标签:60,秒数,微信,strtotime,date,朋友圈,几小时,enddate,86400
来源: https://blog.csdn.net/TiaoZhanJi_Xian/article/details/123400679

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有