| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
phpde
10年前发布

PHP将时间格式化几天前、几分钟前等

<?php    class DateFormat  {      private static $_DIFF_FORMAT = array(          'DAY'           => '%s天前',          'DAY_HOUR'      => '%s天%s小时前',          'HOUR'          => '%s小时',          'HOUR_MINUTE'   => '%s小时%s分前',          'MINUTE'        => '%s分钟前',          'MINUTE_SECOND' => '%s分钟%s秒前',          'SECOND'        => '%s秒前',      );        /**       * 友好格式化时间       *        * @param int 时间       * @param array $formats       * @return string       */      public static function diff($timestamp, $formats = null)       {          if ($formats == null) {              $formats = self::$_DIFF_FORMAT;          }          /* 计算出时间差 */          $seconds = time() - $timestamp;          $minutes = floor($seconds / 60);          $hours   = floor($minutes / 60);          $days    = floor($hours / 24);            if ($days > 0) {              $diffFormat = 'DAY';          } else {              $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';              }          }            $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;          }          return $dateDiff;      }  }    echo DateFormat::diff('1310455823');  /* 33分钟47秒前  */