- 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 time
- * @param array $formats
- * @return string
- */
- public static function diff($timestamp, $formats = null)
- {
- if ($formats == null) {
- $formats = self::$_DIFF_FORMAT;
- }
- /* 時差を計算します*/
- $秒 = time() - $timestamp;
- $ 分 = フロア($秒 / 60);
- $時間 = フロア($分 / 60);
- $日 = フロア($時間 / 24);
-
- if ($日 > 0) {
- $diffFormat = ' DAY';
- } else {
- $diffFormat = ($hours > 0) ? 'HOUR' : 'MINUTE';
- if ($diffFormat == 'HOUR') {
- $diffFormat .= ($ minutes > 0) 0 && ($分 - $時間 * 60) > 0) ? '_MINUTE' : '';
- } else {
- $diffFormat = (($秒 - $分 * 60) > 0 && $分 > 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);
- ブレーク;
- 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, $ 秒 - $分 * 60);
- ブレーク;
- case 'SECOND':
- $dateDiff = sprintf($formats[$diffFormat], $秒);
- ブレーク;
- }
- return $dateDiff;
- }
- }
-
- echo DateFormat::diff('1310455823');
- /* 33 分 47 秒前*/
コードをコピー
|