yii里面有没有这种偷懒函数:把日期格式化为多久以前

其实这个功能应该自己写的,可是我想全知全能的qiang哥说不定会提供现成的呢。就是把一个日期格式化为:1 day ago 或 1 hour ago

时间比较是有现成的php函数或者方法可用,需要php5.3。

你可以用这个:




	function ago($time, $since=null)

	{

    	$patterns = array(

        	'seconds'   => t('less than a minute'),

        	'minute'	=> t('about a minute'),

        	'minutes'   => t('%d minutes'),

        	'hour'  	=> t('about an hour'),

        	'hours' 	=> t('about %d hours'),

        	'day'   	=> t('a day'),

        	'days'  	=> t('%d days'),

        	'month' 	=> t('about a month'),

        	'months'	=> t('%d months'),

        	'year'  	=> t('about a year'),

        	'years' 	=> t('%d years'),

    	);

    	if($since===null)

        	$since=time();

    	if(!is_int($since) && !ctype_digit($time))

        	$since = strtotime($since);

    	if(!is_int($time) && !ctype_digit($time))

        	$time = strtotime($time);

    	$seconds = abs($since - $time);

    	$minutes = $seconds/60;

    	$hours = $minutes/60;

    	$days = $hours/24;

    	$weeks = $days/7;

    	$months = $days/30;

    	$years = $days/365;


    	if($seconds < 45)

        	$words = $patterns['seconds'];

    	else if($seconds < 90)

        	$words = $patterns['minute'];

    	else if($minutes < 45)

        	$words = sprintf($patterns['minutes'], $minutes);

    	else if($minutes < 90)

        	$words = $patterns['hour'];

    	else if($hours < 24)

        	$words = sprintf($patterns['hours'], $hours);

    	else if($hours < 48)

        	$words = $patterns['day'];

    	else if($days < 30)

        	$words = sprintf($patterns['days'], $days);

    	else if($days < 60)

        	$words = $patterns['month'];

    	else if($days < 365)

        	$words = sprintf($patterns['months'], $months);

    	else if($years < 2)

        	$words = $patterns['year'];

    	else

        	$words = sprintf($patterns['years'], $years);

    	$suffix = $since - $time > 0 ? 'ago' : 'from now';

    	if($since - $time > 0)

        	return $words.' ago';

    	else

        	return $words.' from now';

	}



多谢两位,尤其是qiang哥。不知道有没有提交到扩展库,这是个很使用的功能。

问个问题 t() 是yii自带的函数吗,我的报错说未定义啊。

我查了下,t函数是多语言函数,可以去掉,我再研究一下。

好了,如果没有多语言的话,直接把t函数去掉就行了。

自己弄个class放到components就行