Перейти к содержимому


Фотография
- - - - -

Доработка


Лучший Ответ spro1 , 20 August 2020 - 14:24

Вопрос решен. Евгений, огромное спасибо за помощь!

 

Комментарии от Евгения:

 
берем значение, чистое. Далее его вместе с ОФФСетом (отступ) по часовому поясу превращаем в дату
это важно, т.к. а то было -1 день
т.к. дата например в 9 вечера была
 
 
далее ниже мы превращаем дату 01.01.2001 снова в нужный формат ( авг 18 2020)
 
Поправленный файл приложен.
Скопировать сюда /media/zoo/applications/jbuniversal/elements/date
 
Перейти к сообщению


Сообщений в теме: 8

#1 spro1

spro1

Отправлено 20 August 2020 - 09:04

Всем привет!

 

Название темы обрезалось при сохранении(( исправить не могу.

Было так: Доработка Date - модифицированный // JBMarketplace

 

Не могу написать в теме поддержки элемента, так как там почему-то нет прав(

http://forum.jbzoo.c...-jbmarketplace/

 

Элемент действительно интересный и полезный. Вот и мне он тоже пригодился.

 

В теме поддержки уже задавали вопрос про то, что с пользовательским форматом даты этот элемент не работает, так и есть.

 

Проблема возникает вот тут:

//Получаем текущую дату и сравниваем ее с текущим элементом массива
$mtdate = strtotime(date("d.m.Y")) - strtotime($value);	

Если например выбрать формат даты с указанием месяца в виде текста (20 августа 2020), то этот код работать не будет.

 

Чтобы все работало корректно, нужно, чтобы $value содержала дату например в таком формате (20.20.2020)

 

Ребят, помогите пожалуйста советом, как в этом элементе кроме даты в пользовательском формате получить дату в формате d.m.Y?

 

Хотя может есть и более оптимальные решения.

 

Всем добра!


Сообщение отредактировал spro1: 20 August 2020 - 09:05


#2 CB9TOIIIA

CB9TOIIIA

Отправлено 20 August 2020 - 09:44

Добрый, так почему в коде явно это не задать?
  • 0

#3 spro1

spro1

Отправлено 20 August 2020 - 09:53

Евгений, если бы знал как, то с удовольствием))

 

У меня все с php не просто, знание очень мало. Вот почему...

 

Сможете помочь?



#4 CB9TOIIIA

CB9TOIIIA

Отправлено 20 August 2020 - 11:17

Я вопрос не понял:

Если например выбрать формат даты с указанием месяца в виде текста (20 августа 2020), то этот код работать не будет.



Чтобы все работало корректно, нужно, чтобы $value содержала дату например в таком формате (20.20.2020)


Судя по коду там и есть 01.01.2001
А не пользовательский "август".
Или что?
  • 0

#5 spro1

spro1

Отправлено 20 August 2020 - 11:48

Евгений, у меня задан такой вот пользовательский формат даты <div class="month">%b</div>%d<div class="year">%Y</div>

 

Переменная $value будет содержать примерно это <div class="month">авг</div>15<div class="year">2020</div>

 

вот кусок кода, в котором формируется $value

		$actdate = 0;
        $params = $this->app->data->create($params);
		//Загоняем все даты в массив
		$result = array();		
		foreach ($this as $self) {$result[] = $this->_render($params);}
		
		//Выводим массив
		foreach ($result as &$value) {
		//Получаем дату из массива
		$value = $this->app->html->_('date', $value, $this->app->date->format($params->get('date_format') == 'custom' ? $params->get('custom_format') : $params->get('date_format')));		
		//Получаем текущую дату и сравниваем ее с текущим элементом массива
		$mtdate = strtotime(date("d.m.Y")) - strtotime($value);		
		//Задаем переменные отметки даты как ближайшая и переменные попап окна		
		$myclass = 'unvizibledate';
		$dcont = 'Прошедшая дата тура';
		$ortitle = 'Дата тура';

Пока у меня была идея сделать так, чтобы переменная $value не зависела от выбранного пользовательского формата, а формат даты для нее был задан "жестко". Вот только как это сделать я не знаю(


Сообщение отредактировал spro1: 20 August 2020 - 11:49


#6 CB9TOIIIA

CB9TOIIIA

Отправлено 20 August 2020 - 11:59

А в чем проблема задать изначально нужный формат?

<div class="month">%d</div>%m<div class="year">%Y</div>

Разве нет?

заменим на 
$value = $this->app->html->_('date', $value, "d.m.Y");		
//Получаем текущую дату и сравниваем ее с текущим элементом массива
$mtdate = strtotime(date("d.m.Y")) - strtotime($value);		

  • 0

#7 spro1

spro1

Отправлено 20 August 2020 - 12:02

Так пробовал, ошибка:

0 - DateTime::__construct(): Failed to parse time string (&lt;div class=&quot;month&quot;&gt;авг&lt;/div&gt;15&lt;div class=&quot;year&quot;&gt;2020&lt;/div&gt;) at position 0 (&lt;): Unexpected character



#8 CB9TOIIIA

CB9TOIIIA

Отправлено 20 August 2020 - 12:03

ой да хз) отпишите мне в телегу с доступами - а то это гадание) t.me/cb9toiiia


  • 0

#9 spro1

spro1

Отправлено 20 August 2020 - 14:24   Лучший Ответ

Вопрос решен. Евгений, огромное спасибо за помощь!

 

Комментарии от Евгения:

1.jpg

 
берем значение, чистое. Далее его вместе с ОФФСетом (отступ) по часовому поясу превращаем в дату
это важно, т.к. а то было -1 день
т.к. дата например в 9 вечера была
 
2.jpg
 
далее ниже мы превращаем дату 01.01.2001 снова в нужный формат ( авг 18 2020)
 
Поправленный файл приложен.
Скопировать сюда /media/zoo/applications/jbuniversal/elements/date
 

Прикрепленные файлы

  • Прикрепленный файл  date.zip   1.97К   5 Количество загрузок:





Click to return to top of page in style!