Сравнение дат

#
Сравнение дат
как в xsl корректно сравнить даты?...допустим текущую дату с датой переданной через item_property (типа Дата)
если одна дата позже другой выводим одно, если нет - другое
и в каком формате нужно передать текущую дату? через external_propertys
Модератор
#
Re: Сравнение дат
Посмотрите:
http://www.google.ru/search?q=%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B4%D0%B0%D1%82+XSL&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a

Предлагаю дату передавать в виде POSIX-времени для простого арифметического сравнения, теперь остается вопрос в получении даты ИЭ в этом виде - либо на XSL расчитать из обычной даты или написать в поддержку, чтобы добавили передачу в XML этих дат.
#
Re: Сравнение дат
Здравствуйте! Тоже интересен этот вопрос, в данном топике я пришел к этому http://www.hostcms.ru/forums/22/3755

Нужно сравнить дату переданную во внешние параметры с датой ИЭ

Спасибо
ку
Модератор
#
Re: Сравнение дат
compaq,
Нужно привести дату к числу, потом ее сравнивать.
Пример приведения даты:
concat(substring(item_date, 7, 4), substring(item_date, 4, 2), substring(item_date, 1, 2))

Для времени будет чуть сложнее, также substring-ами возьмете часы, минуты и секунды и добавьте в результату.
#
Re: Сравнение дат
HostCMS спасибо за ответ, правильно ли я делаю число из item_datetime (22.05.2010 19:28:00)


<xsl:value-of select="concat(substring(item_datetime, 18, 2), substring(item_datetime, 15, 2), substring(item_datetime, 12, 2), substring(item_datetime, 7, 4), substring(item_datetime, 4, 2), substring(item_datetime, 1, 2))" disable-output-escaping="yes" />



получаю: 00281920100522
ку
Модератор
#
Re: Сравнение дат
compaq,
Нужно добавить Ваш фрагмент в конец моего примера и поменять порядок, чтобы получилось 20100522192800
#
Re: Сравнение дат
HostCMS спасибо! теперь ясно!
ку
Модератор
#
Re: Сравнение дат
compaq,
Пожалуйста
#
Re: Сравнение дат
Ну ёмаё! Ребята, вы издеваетесь?)) compaq, ну не мог сразу написать готовый код? Это же так просто, скопировать готовый правильный код. Пришлось циферки подгонять.
Вот:
<xsl:variable name="datetime" select="item_datetime" />
<xsl:value-of select="concat(substring($datetime, 7, 4), substring($datetime, 4, 2), substring($datetime, 1, 2), substring($datetime, 12, 2), substring($datetime, 15, 2), substring($datetime, 18, 2) )" disable-output-escaping="yes" />


Для шестерки:
<xsl:variable name="datetime" select="datetime" />

Впрочем в переменную $datetime можно запихать любую дату-время.
#
Re: Сравнение дат
мммм....
не вкусно.
может быть стоит сделать ещё проще?
перевести формат хранения даты  в

%Y.%m.%d %H:%M:%S

а в XSL в переменной трансформируем дату для сравнения так:

для API 6
<xsl:variable name="datetime" select="translate(datetime, '.:- ', '')" />

для API 5
<xsl:variable name="datetime" select="translate(item_datetime, '.:- ', '')" />


в итоге в переменной получаем дату в виде:
20161028155290
год-месяц-день-час-минуты-секунды
сравнивайте с другой датой с такой же трансформацией
Знания имеют свои пределы, и только глупость человеческая не знает границ...
Авторизация