A-A+

PHP计算几分钟前、几小时前等

2014年07月28日 PHP技术文章 评论 26 条 阅读 392 views 次

在网页应用中,经常会用到要计算几分钟前,或者几个小时前所进行的操作,比如在我们经常写博客时,就会有前几天发表了什么文章,或者是几分钟之前发表了某篇文章,在博客中,其中使用插件即可实现这样的计算时间的操作,像这样的应用,除了在我们自己的博客会遇到外,更多的类似于QQ空间社交类的站点应用就更广了。。

在QQ空间中,经常看到某某好友几分钟或几秒钟发表了某篇说说,或上传了某个图片之类的,还有在新流微博中,对于时间的计算也非常的精细,类如某个明星几秒钟之前发表了一篇微博,总之,时间的计算在SNS的社交网络中显得非常重要,毕竟SNS社交网络重视的是新闻的即时性,快速性。

那么使用PHP怎样来计算时间呢,其实原理也是很简单的,通俗的来讲就是将“现在的时间”减去“发表新闻的时间”就等于“距离的时间”,这个说得不是哪么准确,但为了能够理解吧,也就是时间的加减法,这里写了一个PHP的时间计算函数,看如下函数代码:

function format_date($time){
$t=time()-$time;
$f=array(
'31536000'=>'年',
'2592000'=>'个月',
'604800'=>'星期',
'86400'=>'天',
'3600'=>'小时',
'60'=>'分钟',
'1'=>'秒'
);
foreach ($f as $k=>$v) {
if (0 !=$c=floor($t/(int)$k)) {
return $c.$v.'前';
}
}
}

这是自定义了一个时间的函数 format_date(),参数就是要计算的时间了,$t=time()-$time;就是用来计算时间的,那么下面又提供了一组数组,这个数组定义了一系列时间,年,月,星期,天,小时,分钟,秒等等,最后利用 foreache 将其时间进行循环,刚开始看可能有些不太理解,可以自己试着去运行一下,把 函数里面的时间换成自己要计算的函数,其实在大多博客的插件中就是使用了这样的函数进行时间的计算的,很实用的一个PHP函数功能。

标签:

26 条留言  访客:26 条  博主:0 条

  1. 赢在大学励志网

    呵呵,这个有点不太懂啊,还是先了解一下

  2. 李若蟾

    PHP这种技术不懂啊

  3. maillot saxo bank

    难怪有的博客没有发布时间

  4. 歌词哇

    正好研究研究

  5. 屠龙

    函数代码还真不懂。

  6. 知儿网

    也想在自己的博客里添加文章发布的时间!

    • smiling

      你的博客文章发布时间不有么.

  7. 百度小说

    这也能计算啊

    • smiling

      不少站点都有计算时间的函数,很常用到的.

  8. 每日秀

    很不错很给力

  9. 网络营销技巧

    以后研究研究

  10. 微而

    没用到

  11. 不不博客

    都是高手些,博主,诚求友情链接

    • smiling

      已经添加友情链接.

  12. 阳光博客

    PHP高手!佩服啊

  13. 穿越网

    这个好顺便问一下博主知不知道如何实现“网站运行多少天”

    • 张戈博客

      以前分享过:http://www.zhangge.net/3201.html

      • smiling

        正好去看一下,wp中就有网站运行多少天的函数.

  14. boke123

    博主所说的情况确实很常见,很多博客文章中的版权说明也有这个显示,学习了

  15. 听风客栈

    示例输出:
    不到 1星期
    1天前

  16. 听风客栈

    稍加改进一下吧,另外最好有个例子。
    <?php
    header("Content-type: text/html; charset=utf-8");
    /**
    * 获取时间差异字符串表示
    *
    * param int $time 当前时间值timestamp,整数,可用strtotime进行时间转换
    * param int $punit 时间单位,可选年、月、星期、天、小时、分钟、秒,不够则显示不够消息
    * return string
    **/

    function format_date($time,$punit=”){
    $t=time()-$time; //首先获取当前时间和形式参数时间差
    $f=array( //定义一个关联数组,key为以秒为单位的时间
    ‘31536000’=>’年’,
    ‘2592000’=>’月’,
    ‘604800’=>’星期’,
    ‘86400’=>’天’,
    ‘3600’=>’小时’,
    ’60’=>’分钟’,
    ‘1’=>’秒’
    );
    if (empty($punit)){
    foreach ($f as $k=>$v) {//循环关联数组
    //如果$t的时间差除数组中的key值能够大于0,即能整除
    if (0 !=$c=floor($t/(int)$k)) {
    return $c.$v.’前’;//显示结果
    }
    }
    }else{
    foreach ($f as $k=>$v) {//循环关联数组
    if ($v==$punit){
    if (0 !=$c=floor($t/(int)$k)) {
    return $c.$v.’前’;//显示结果
    }else{
    return ‘不到 1’.$v;
    }
    }
    }
    }
    }
    /*———举2个示例————-*/
    //输出小时数
    echo format_date(strtotime(‘2014-07-25′),’星期’);
    echo ”;
    //默认输出数
    echo format_date(strtotime(‘-1 day’));

    ?>

    • 非凡网博客

      博主学PHP 才没多久?

      • smiling

        时间没多久,才有几年时间吧。

    • smiling

      改进得好完善。

  17. 免费部落

    这个功能很好,实用。博主其实可以多写一些这方面的,简单

  18. 减肥水果网

    先收藏吧,以后说不定会用着

给我留言