timeline function

本文介绍了一个PHP函数,该函数能够将两个Unix时间戳之间的差异以人性化的语言展示出来。例如,它会告诉读者一条记录是刚刚发布、几分钟前或是更具体的日期形式。此函数考虑了同一年内的时间比较,并针对不同的时间跨度提供了多种表达方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function dateWord($from, $now)//$from是发布时间,都是以unix时间戳计算
{
 //fix issue 3#6 by saturn, solution by zycbob
 
 /** 如果不是同一年 */
       if (idate('Y', $now) != idate('Y', $from)) 
       {
           return date('Y年m月d日', $from);
       }
 
 /** 以下操作同一年的日期 */
 $seconds = $now - $from;
       $days = idate('z', $now) - idate('z', $from);//idate格式化成一个整数,z表示年份中的第几天
       
       /** 如果是同一天 */
       if ($days == 0) 
       {
        /** 如果是一小时内 */
           if ($seconds < 3600) 
           {
            /** 如果是一分钟内 */
               if ($seconds < 60)
               {
                   if (3 > $seconds) 
                   {
                       return '刚刚';
                   } 
                   else 
                   {
                       return sprintf('%d秒前', $seconds);
                   }
               }

               return sprintf('%d分钟前', intval($seconds / 60));
           }

           return sprintf('%d小时前', idate('H', $now) - idate('H', $from));
       }

 /** 如果是昨天 */
       if ($days == 1) 
       {
           return sprintf('昨天 %s', date('H:i', $from));
       }
       
       /** 如果是前天 */
       if ($days == 2) 
       {
        return sprintf('前天 %s', date('H:i', $from));
       }

       /** 如果是7天内 */
       //if ($days < 7) 
      // {
        //   return sprintf('%d天前', $days);
      // }

       /** 超过3天 */
       return date('n月j日 H:i', $from);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值