天下网吧 >> 网吧天地 >> 天下码农 >> 桌面开发 >> VBS >> 正文

人性化时间格式化代码PHP版参考

2021-5-12天下码农程序猿

所谓的「人性化时间格式化」就是在原本的标准时间格式化2021-05-12 12:00:00这种格式变成比较人性化的类似刚刚、XX分钟以前、XX小时以前、XX天以前这种格式。目前主流的时间格式采用「人性化」格式的比较多,现在分享2个相关PHP代码来实现这个功能:

function dgmdate($timestamp, $format = 'dt', $timeoffset = '9999', $uformat = '') {
	global $_G;
	$format == 'u' && !$_G['setting']['dateconvert'] && $format = 'dt';
	static $dformat, $tformat, $dtformat, $offset, $lang;
	if($dformat === null) {
		$dformat = getglobal('setting/dateformat');
		$tformat = getglobal('setting/timeformat');
		$dtformat = $dformat.' '.$tformat;
		$offset = getglobal('member/timeoffset');
		$sysoffset = getglobal('setting/timeoffset');
		$offset = $offset == 9999 ? ($sysoffset ? $sysoffset : 0) : $offset;
		$lang = lang('core', 'date');
	}
	$timeoffset = $timeoffset == 9999 ? $offset : $timeoffset;
	$timestamp += $timeoffset * 3600;
	$format = empty($format) || $format == 'dt' ? $dtformat : ($format == 'd' ? $dformat : ($format == 't' ? $tformat : $format));
	if($format == 'u') {
		$todaytimestamp = TIMESTAMP - (TIMESTAMP + $timeoffset * 3600) % 86400 + $timeoffset * 3600;
		$s = gmdate(!$uformat ? $dtformat : $uformat, $timestamp);
		$time = TIMESTAMP + $timeoffset * 3600 - $timestamp;
		if($timestamp >= $todaytimestamp) {
			if($time > 3600) {
				$return = intval($time / 3600).' '.$lang['hour'].$lang['before'];
			} elseif($time > 1800) {
				$return = $lang['half'].$lang['hour'].$lang['before'];
			} elseif($time > 60) {
				$return = intval($time / 60).' '.$lang['min'].$lang['before'];
			} elseif($time > 0) {
				$return = $time.' '.$lang['sec'].$lang['before'];
			} elseif($time == 0) {
				$return = $lang['now'];
			} else {
				$return = $s;
			}
			if($time >=0 && !defined('IN_MOBILE')) {
				$return = ''.$return.'';
			}
		} elseif(($days = intval(($todaytimestamp - $timestamp) / 86400)) >= 0 && $days < 7) { if($days == 0) { $return = $lang['yday'].' '.gmdate($tformat, $timestamp); } elseif($days == 1) { $return = $lang['byday'].' '.gmdate($tformat, $timestamp); } else { $return = ($days + 1).' '.$lang['day'].$lang['before']; } if(!defined('IN_MOBILE')) { $return = ''.$return.'';
			}
		} else {
			$return = $s;
		}
		return $return;
	} else {
		return gmdate($format, $timestamp);
	}
}

上面是带有lang功能(多语言)的代码,下面分享一个不带多语言功能的,直接中文方式的,拿去即可以使用的人性化时间格式化的PHP代码,如下:

 //人性化显示时间
//$sTime int  时间戳
    function formatTime($sTime, $formt = 'Y-m-d') {

        if (!$sTime) {
            return '';
        }

        //sTime=源时间,cTime=当前时间,dTime=时间差
        $cTime = time();
        $dTime = $cTime - $sTime;
        $dDay = intval(date('z',$cTime)) - intval(date('z',$sTime));
        $dYear = intval(date('Y',$cTime)) - intval(date('Y',$sTime));

        //n秒前,n分钟前,n小时前,日期
        if ($dTime < 60 ) {
            if ($dTime < 10) {
                return '刚刚';
            } else {
                return intval(floor($dTime / 10) * 10).'秒前';
            }
        } elseif ($dTime < 3600 ) {
            return intval($dTime/60).'分钟前';
        } elseif( $dTime >= 3600 && $dDay == 0  ){
            return intval($dTime/3600).'小时前';
        } elseif( $dDay > 0 && $dDay<=7 ){
            return intval($dDay).'天前';
        } elseif( $dDay > 7 &&  $dDay <= 30 ){
            return intval($dDay/7).'周前';
        } elseif( $dDay > 30 ){
            return intval($dDay/30).'个月前';
        } elseif ($dYear==0) {
            return date('m月d日', $sTime);
        } else {
            return date($formt, $sTime);
        }
    }

本文来源:天下码农 作者:程序猿

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行