php友好格式化时间

/**
     * 友好格式化时间
     * @param int $timestamp 时间
     * @param array $formats
     * @return string
     */
    public static function formatDateTime($timestamp, $formats = null)
    {
        if ($formats == null) {
            $formats = array(
                ‘DAY‘           => ‘%s天前‘,
                ‘DAY_HOUR‘      => ‘%s天%s小时前‘,
                ‘HOUR‘          => ‘%s小时‘,
                ‘HOUR_MINUTE‘   => ‘%s小时%s分前‘,
                ‘MINUTE‘        => ‘%s分钟前‘,
                ‘MINUTE_SECOND‘ => ‘%s分钟%s秒前‘,
                ‘SECOND‘        => ‘%s秒前‘,
            );
        }

        /* 计算出时间差 */
        $seconds = time() - $timestamp;
        $minutes = floor($seconds / 60);
        $hours   = floor($minutes / 60);
        $days    = floor($hours / 24);

        if ($days > 0 && $days < 31) {
            $diffFormat = ‘DAY‘;
        } elseif($days == 0) {
            $diffFormat = ($hours > 0) ? ‘HOUR‘ : ‘MINUTE‘;
            if ($diffFormat == ‘HOUR‘) {
                $diffFormat .= ($minutes > 0 && ($minutes - $hours * 60) > 0) ? ‘_MINUTE‘ : ‘‘;
            } else {
                $diffFormat = (($seconds - $minutes * 60) > 0 && $minutes > 0)
                    ? $diffFormat.‘_SECOND‘ : ‘SECOND‘;
            }
        }else{
            $diffFormat = ‘TURE_DATE_TIME‘;//超出30天, 正常时间显示
        }

        $dateDiff = null;
        switch ($diffFormat) {
            case ‘DAY‘:
                $dateDiff = sprintf($formats[$diffFormat], $days);
                break;
            case ‘DAY_HOUR‘:
                $dateDiff = sprintf($formats[$diffFormat], $days, $hours - $days * 60);
                break;
            case ‘HOUR‘:
                $dateDiff = sprintf($formats[$diffFormat], $hours);
                break;
            case ‘HOUR_MINUTE‘:
                $dateDiff = sprintf($formats[$diffFormat], $hours, $minutes - $hours * 60);
                break;
            case ‘MINUTE‘:
                $dateDiff = sprintf($formats[$diffFormat], $minutes);
                break;
            case ‘MINUTE_SECOND‘:
                $dateDiff = sprintf($formats[$diffFormat], $minutes, $seconds - $minutes * 60);
                break;
            case ‘SECOND‘:
                $dateDiff = sprintf($formats[$diffFormat], $seconds);
                break;
            default:
                $dateDiff = date(‘Y-m-d H:i:s‘);
        }
        return $dateDiff;
    }

  

时间: 2024-10-08 13:37:38

php友好格式化时间的相关文章

php格式化时间戳显示友好的时间

在项目中时间一律显示为2014-10-20 10:22显得很呆板.在微博.QQ空间等网站通常会显示为几秒前,几分钟前,几小时前等容易阅读的时间,我们称之为友好的时间格式.那么用php怎么实现呢? 大体思路如下: 如果是跨年并且大于3天就显示为具体的时间 如果是今天的 如果是一分钟内则显示几秒之前 如果是一小时内则显示几分钟前 如果是当天且大于一小时则显示为几小时前 如果是昨天则显示为昨天几点 如果是前天则显示为前天几点 如果大于三天(没有跨年)则显示为几月几号 根据以上思路就不难写出实现代码了:

nodejs 模块moment格式化时间,获取当前时间的前一天时间

var moment = require('moment'); moment.locale('zh-cn'); var today = {}; var _today = moment(); today.year = _today.format('yyyy'); /*现在的年*/ today.date = _today.format('YYYY-MM-DD'); /*现在的时间*/ today.yesterday = _today.subtract(1, 'days').format('YYYY-

Java 格式化时间 不匹配

今天获取的时间不匹配,获取的时间是现在的时间,但是现实的时候确实 1970 年, 让我拍很郁闷! 应该讲 服务器返回的时间数据 * 1000 之后才进行,解析: Time 解析工具类: package com.hades.newstyle.utils; import java.text.DateFormat; import java.util.Date; /** * 传递一个时间, * 格式化时间的工具类: * * * @author Hades * @time Nov 4, 2014 * @t

OC中关于时间的几个函数及格式化时间

// // main.m // 时间格式化 // // Created by Macro on 14-12-10. // Copyright (c) 2014年 Macro. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //返回当前时间,以GMT为准 NSDate * date = [NSDate da

js 格式化时间日期函数小结

下面是脚本之家为大家整理的一些格式化时间日期的函数代码,需要的朋友可以参考下. 代码如下: Date.prototype.format = function(format){ var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(

格式化时间

格式化时间 by 伍雪颖 + (NSString *)formatTime:(NSString *)time { NSDateFormatter*dateFormatter =[[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"]; NSDate *date = [dateFormatter dateFromString:time]; [dateFormatte

Python time 获取格式化时间

Python中取得时间相关的信息的话,要用到python time模块,python time模块里面有很多非常好用的功能. Python中用time.time()取得当前时间的时间戳: >>> import time >>> print time.time() 1438608599.0 这里打印的时间是1970年到现在时间相隔的时间.这样一连串的数字不是我们想要的结果,我们可以利用time模块的格式化时间的方法来处理.用time.localtime()方法,作用是格式

javascript中常见的函数封装 :判断是否是手机,判断是否是微信,获取url地址?后面的具体参数值,毫秒格式化时间,手机端px、rem尺寸转换等

// 判断是否是手机function plat_is_mobile(){ var sUserAgent = navigator.userAgent.toLowerCase(); var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"; var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os"; var bIsMidp = sUserAgent.match

NSDateFormatter格式化时间(十七)

@font-face { font-family: "Courier New"; }@font-face { font-family: "宋体"; }@font-face { font-family: "Cambria Math"; }@font-face { font-family: "@宋体"; }@font-face { font-family: "Calibri"; }@font-face { fo