- 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秒前 */
复制代码
|
幾天, 幾分鐘, PHP
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31