с использованием xslt. Как проверить, была ли дата в течение последних (скажем) 15 дней?
ввод:
- дата в формате дд / мм / гг
- X количество дней
выход:
- если дата произошла в течение X дней с этого момента
например, недавний ('02 / 07/10 ', 30) вернул бы значение true, если бы 02/07/10 было 30 дней назад
несколько шагов, которые я получил:
основной функционал
<xsl:function name="custom:monthtodays">
<xsl:param name="date"/>
<xsl:param name="daysago"/>
<xsl:variable name="daycountnow" select="year-from-dateTime(current-dateTime())*365+day-from-dateTime(current-dateTime())+custom:monthtodays(month-from-dateTime(current-dateTime())" />
<xsl:variable name="datedaycount" select="numeric(substring($date,1,2))+numeric(substring($date,7,2))*365+custom:monthtodays(numeric(substring($date,4,2)))" />
<xsl:value-of select="$daycountnow - $datedaycount - $daysago > 0"/>
</xsl:function>
вспомогательная функция
<xsl:function name="custom:monthtodays">
<xsl:param name="month"/>
<xsl:choose>
<xsl:when test="$month =1"> <xsl:value-of select="0"/> </xsl:when>
<xsl:when test="$month =2"> <xsl:value-of select="31"/> </xsl:when>
<xsl:when test="$month =3"> <xsl:value-of select="59"/> </xsl:when>
<xsl:when test="$month =4"> <xsl:value-of select="90"/> </xsl:when>
<xsl:when test="$month =5"> <xsl:value-of select="120"/> </xsl:when>
<xsl:when test="$month =6"> <xsl:value-of select="151"/> </xsl:when>
<xsl:when test="$month =7"> <xsl:value-of select="181"/> </xsl:when>
<xsl:when test="$month =8"> <xsl:value-of select="212"/> </xsl:when>
<xsl:when test="$month =9"> <xsl:value-of select="243"/> </xsl:when>
<xsl:when test="$month =10"> <xsl:value-of select="273"/> </xsl:when>
<xsl:when test="$month =11"> <xsl:value-of select="304"/> </xsl:when>
<xsl:when test="$month =12"> <xsl:value-of select="334"/> </xsl:when>
</xsl:choose>
</xsl:function>
но это не учитывает високосные годы и тому подобное ... конечно, есть лучший путь?