Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как изменить формат вывода даты для статической страницы?

Как изменить формат вывода даты для статической страницы?


     04.02.2017    Общие вопросы по PHP, MySQL    528

вопрос
Всем привет!
Коллеги очень прошу вашей помощи в решении одной задачи.
DLE 11.2
Есть статическая страница на которой выводятся последние добавленные новости.
На данной странице, помимо последних добавленных новостей, нужно выводить дату их публикации и количество.

Дата выводится так:
$newscontent['date'] = strtotime($newscontent['date']);
if( date( 'Ymd', $newscontent['date'] ) == date( 'Ymd', $_TIME ) )
$tpl12->set( '{date}', $lang['time_heute'] . langdate( ", H:i", $newscontent['date'] ) );
elseif( date( 'Ymd', $newscontent['date'] ) == date( 'Ymd', ($_TIME - 86400) ) )
$tpl12->set( '{date}', $lang['time_gestern'] . langdate( ", H:i", $newscontent['date'] ) );
else
$tpl12->set( '{date}', langdate( $config['timestamp_active'], $newscontent['date'] ) );

На статической странице дата выводится как год, месяц, день.
Можно ли ее "развернуть", чтобы сначала шел день, месяц и год? Я пробовал использовать DATE_FORMAT, у меня не получилось.

Как еще можно вывести количество последних добавленных новостей на статической странице?

Ответа пока нет


4 комментария

PunPun
Эксперт

PunPun - 5 февраля 2017 14:17 -

Ниже
$tpl12->set( '{date}', langdate( $config['timestamp_active'], $newscontent['date'] ) );
Вставить
$news_date = $row['date'];
$tpl12->copy_template = preg_replace_callback ( "#\{date=(.+?)\}#i", "formdate", $tpl12->copy_template );
И выводите дату как хотите
{date=d m Y}

well​

gorod
Юзер

gorod - 5 февраля 2017 18:23 -

Gameer, Спасибо!

Получилось, но не работает так, как нужно.
Сейчас везде, в каждом блоке, выводится фраза с одной и той же датой "Обновления на 13.12.2016 ". Что не соответствует действительности, так как обновления происходили каждый день.

Код был такой:

foreach ($lastnews as $date => $news){		
		$tpl1->set("{date}", $date);
 
$newscontent['date'] = strtotime($newscontent['date']);			
			if( date( 'Ymd', $newscontent['date'] ) == date( 'Ymd', $_TIME ) ) 	{	
				$tpl1->set( '{date}', $lang['time_heute'] . langdate( ", H:i", $newscontent['date'] ) ); }			
			elseif( date( 'Ymd', $newscontent['date'] ) == date( 'Ymd', ($_TIME - 86400) ) ) {
				$tpl1->set( '{date}', $lang['time_gestern'] . langdate( ", H:i", $newscontent['date'] ) ); }
			else {			
				$tpl1->set( '{date}', langdate( $config['timestamp_active'], $newscontent['date'] ) ); }
			
			$news_date = $row['date'];
			$tpl1->copy_template = preg_replace_callback ( "#\{date=(.+?)\}#i", "formdate", $tpl1->copy_template );
}


Если здесь это:

foreach ($lastnews as $date => $news){		
		$tpl1->set("{date}", $date); 


Заменить на это:

foreach ($lastnews as $date => $news){		
		$tpl1->set("{date=d.m.Y}", $date); 


А в файле шаблона написать:
{date}


Тогда в каждом блоке появляется правильная дата, но в таком формате: "Обновления на 25-01-2017, 19:10".
А нужно, чтобы было в таком: d.m.Y.

Как это можно исправить?

При этом, почему то последние добавленные новости за 2016 год выводятся так как и нужно: в хронологическом порядке: от последней даты добавления к первой дате добавления, а новости за 2017 год - уже в разнобой с нарушением хронологии. То есть сейчас выводится последняя добавленная новость за 25.01.2017, за ней идет за 28.01.2017, далее - за 21.01.2017.

Как это тоже можно исправить?

PunPun
Эксперт

PunPun - 5 февраля 2017 18:35 -

gorod,
$news_date = $row['date'];
замените на
$news_date = $newscontent['date'];
и тег заработает.

well​

gorod
Юзер

gorod - 5 февраля 2017 22:52 -

Gameer, спасибо,
исправил, но особенно не помогло.

Если в файле шаблона написать:
{date}


Тогда выведется так: "Обновления на 25-01-2017, 19:10".
А нужно, чтобы было так: d.m.Y.

Если в файле шаблона написать:
{date=d.m.Y}


Тогда везде выведется одна и та же дата: "Обновления на 13.12.2016".

Что еще можно сделать?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх