Получить элементы с датой статуса больше или равной сегодняшней дате минус 30 дней с xslt? - PullRequest
0 голосов
/ 01 сентября 2010

У меня есть две даты в следующем формате:

1) <xsl:value-of select="ddwrt:FormatDateTime(string(@Status_x0020_Date) ,1033 ,'yyyy-MM-dd ')" />

2) <xsl:value-of select="ddwrt:FormatDateTime(string(../../../Strategic_Items_Daily_Status/Rows/Row/@Status_x0020_for_x0020_Last_x002) ,1033 ,'yyyy-MM-dd ')" />

Я использую SharePoint Designer для создания условия длясравните эти значения.Дата статуса должна быть больше или равна статусу за последний месяц.

Я начал с проверки, если Дата статуса больше или равна статусу за прошлый месяц, но я думаю, что SPD неправильно переводит.Есть идеи?

    [@Item_x0020_ID = $dvt_ParentRow/@ID and 
number(translate(substring-before(../../../../../../../../../Rows/Row/@Status_x0020_Date,'T'),'-','')) 
<= number(translate(substring-before($Today,'T'),'-',''))]

Вывод дат на странице похож на 2010-09-01.

Заранее спасибо.

Редактировать: проблема в том, чтоЯ не получаю никакого вывода, только если у меня дата статуса не равна статусу за последний месяц.

1 Ответ

0 голосов
/ 01 сентября 2010

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

Я подозреваю, что вашей проблемой может быть использование <= в качестве компаратора; вам нужно будет вместо < с &lt; использовать &lt;=.

Что касается разницы в датах, я использую этот шаблон (Xslt 1.0):

<xsl:template name="calcdays">
  <xsl:param name="date" />
  <xsl:variable name="year" select="substring($date,1,4)" />
  <xsl:variable name="month" select="substring($date,6,2)" />
  <xsl:variable name="day" select="substring($date,9,2)" />
  <xsl:value-of select="(($year - 1970) * 365) + floor(($year - 1969) div 4) + substring('000,031,059,090,120,151,181,212,243,273,304,334,365',($month * 4) - 3,3) + ($day - 1) + (1 - floor((($year mod 4) + 2) div 3))*floor(($month + 17) div 20)" />
  </xsl:template>
</xsl:stylesheet>

для определения количества дней, начиная с 1 января 1970 года, при условии, что передаваемый параметр имеет вид yyyy-mm-dd В любой другой форме вы можете настроить подстроки.

Назовите этот шаблон со строками даты и передайте результаты в переменные, и вы можете сделать прямое сравнение с $later - $earlier &lt;= 30.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...