Автор
Сообщение

Исходная функция :

/**
 * Returns date
 *
 * @param string $formatmask Date mask
 * @param int $udate Date in UNIX timestamp
 * @return string
 */
function sed_build_date($dateformat, $udate)
	{
	global $usr, $cfg;
	$result = @date($dateformat, $udate + $usr['timezone'] * 3600);
	return($result);
	}	

 

Но порой хочется сделать даты красивыми, например как-то по особому выделить время. К примеру вывести дату так:

<span class="sdate">01-01-2014</span><span class="stime">14:10</span> 

 

Сейчас такое можно только хаками, но можно и модифицировать функцию и забацать в ней маску вывода дат ) а шо )

function sed_build_date($dateformat, $udate, $mask="")
	{
	global $usr, $cfg;
	$udate = $udate + $usr['timezone'] * 3600;
	if (!empty($mask))
		{
		$result = preg_replace_callback('#{(.+?)}#isu', create_function('$matches', 'global $udate; return date($matches[1], $udate);'), $mask);
		return($result);
		}
  $result = @date($dateformat, 	$udate);
	return($result);
	}	

 

И теперь спокойненько вызываем например так: 

$udate = 1388571010;
$dateformat = "d-m-Y";
$mask = "<span class=\"sdate\">{d-m-Y}</span><span class=\"stime\">{H:i}</span>";
$beautyfull = sed_build_date($dateformat, $udate, $mask);

 

и получаем:

<span class="sdate">01-01-2014</span><span class="stime">14:10</span> 

 

а при обычном вызове

$beautyfull = sed_build_date($dateformat, $udate);

 

получим стандартно:

01-01-2014

Forever unshaven, red-eyed, detached from reality, with his cockroaches in my head. And let it always will be!


отредактировал(а) Amro: 10-06-22 21:32 GMT

С учётом проблем связанных с передачей глобальных переменных в анонимную ф-цию, конечный вариант такой:

function sed_build_date($dateformat, $udate, $mask = "")
	{
	global $usr, $cfg;
	
	$udate = $udate + $usr['timezone'] * 3600;
	
	if (!empty($mask))
		{
		$mask = preg_replace('#\{(.+?)\}#isu', "{{".$udate."}{\$1}}", $mask); 
		$result = preg_replace_callback('#\{\{(.+?)\}\{(.+?)\}\}#isu', create_function('$matches', 'return @date($matches[2], $matches[1]);'), $mask);
		return($result);
		}

  $result = @date($dateformat, 	$udate);
	return($result);	   
	}	

Вуаля, время отделено от даты:

Forever unshaven, red-eyed, detached from reality, with his cockroaches in my head. And let it always will be!


отредактировал(а) Amro: 13-12-14 21:44 GMT