php:自定义的格式化时间方法

原创 2013年12月05日 16:13:58

如:时间刚好是5分钟前,则对应的时间戳就会被格式化为5分钟前,不多说了,直接贴上代码:

   /**
     * 格式化时间
     * @param integer $timestamp  时间戳
     * @param string $format  dt=日期时间 d=日期 t=时间 u=个性化 其他=自定义
     * @param integer $timeoffset  时区值
     * @param string $custom_format 自定义时间格式
     * @return string
     */
    public function dgmdate( $timestamp, $format = 'dt', $timeoffset = '9999', $custom_format = '' ) {
        $return = '';
        $now = time();
        $day_format = 'Y-n-j';
        $time_format = 'H:i:s';
        $date_format = $day_format . ' ' . $time_format;
        $offset = 8; //这里默认是东八区,也就是北京时间
        $lang = array(
            'before' => '前',
            'day' => '天',
            'yday' => '昨天',
            'byday' => '前天',
            'hour' => '小时',
            'half' => '半',
            'min' => '分钟',
            'sec' => '秒',
            'now' => '刚刚',
        );
        $timeoffset = $timeoffset == 9999 ? $offset : $timeoffset;
        $timestamp += $timeoffset * 3600;
        switch ( $format ) {
            case 'dt':
                $format = $date_format;
                break;
            case 'd':
                $format = $day_format;
                break;
            case 't':
                $format = $time_format;
                break;
        }
        if ( $format == 'u' ) {
            $todaytimestamp = $now - ($now + $timeoffset * 3600) % 86400 + $timeoffset * 3600;
            $s = gmdate( empty( $custom_format ) ? $date_format : $custom_format, $timestamp );
            $time = $now + $timeoffset * 3600 - $timestamp;
            if ( $timestamp >= $todaytimestamp ) {
                if ( $time > 3600 ) {
                    $return = '<span title="' . $s . '">' . intval( $time / 3600 ) . $lang['hour'] . $lang['before'] . '</span>';
                } elseif ( $time > 1800 ) {
                    $return = '<span title="' . $s . '">' . $lang['half'] . $lang['hour'] . $lang['before'] . '</span>';
                } elseif ( $time > 60 ) {
                    $return = '<span title="' . $s . '">' . intval( $time / 60 ) . $lang['min'] . $lang['before'] . '</span>';
                } elseif ( $time > 0 ) {
                    $return = '<span title="' . $s . '">' . $time . $lang['sec'] . $lang['before'] . '</span>';
                } elseif ( $time == 0 ) {
                    $return = '<span title="' . $s . '">' . $lang['now'] . '</span>';
                } else {
                    $return = $s;
                }
            } elseif ( ($days = intval( ($todaytimestamp - $timestamp) / 86400 )) >= 0 && $days < 7 ) {
                if ( $days == 0 ) {
                    $return = '<span title="' . $s . '">' . $lang['yday'] . gmdate( $time_format, $timestamp ) . '</span>';
                } elseif ( $days == 1 ) {
                    $return = '<span title="' . $s . '">' . $lang['byday'] . gmdate( $time_format, $timestamp ) . '</span>';
                } else {
                    $return = '<span title="' . $s . '">' . ($days + 1) . $lang['day'] . $lang['before'] . '</span>';
                }
            } else {
                $return = $s;
            }
        } else {
            $return = gmdate( $format, $timestamp );
        }
        return $return;
    }


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android原生Gallery的时间相册自定义分组的实现方法

作者:王挺(ting.wong)   Android原生Gallery中的时间相册,在按时间分组时,会自动平均每个时间相册的照片数量和时间,结果会出现一天的照片出现在多个分组的情况,如下图: ...

将时间自定义格式化

  • 2016年05月25日 13:23
  • 72KB
  • 下载

转载:自定义浏览DWG控件的实现方法, 有时间研究一下(AcGsView使用)

自定义浏览DWG控件的实现方法ARX    总是需要在自定义控件上显示DWG图形,如在一个对话框上动态浏览一个DWG图形,于是写了一个控件,专门用来动态浏览DWG,这个控件从CStatic中派生,运用...

php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)

php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)   shuanmeitang  2016-11-28  3439 查看  0评论 公开 原文 举报 取精 添加收藏   ...

php记录自定义log日志方法

php记录log日志方法:/** * 记录错误日志 * @param 日志内容 $res */ function save_log($res) { $err_date = date("...

《PHP---自定义创建目录文件方法》----如果目录已存在,该目录必须为空才可继续创建

BUG: 如果目录已存在,该目录必须为空才可继续创建

php 常用自定义方法

php 常用自定义方法
  • fdipzone
  • fdipzone
  • 2013年11月02日 00:32
  • 14662

php自定义函数调用全局变量的另类方法

今天在修改网站的网银支付系统时,发现了这种方法。以前写程序时,在php自定义函数里调用全局变量一般都是在函数开头加上global声明一下全 局变量,然后才在函数里使用,但这里提到的这种方法,却不用那...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php:自定义的格式化时间方法
举报原因:
原因补充:

(最多只允许输入30个字)