在 xslt 中查找 2 个日期之间的差异

在 xslt 中查找 2 个日期之间的差异

问题描述:

在 xslt 中找到两个日期之间的天数差异的方法是否比较笨拙?如果是这样,你能指出我正确的方向.我收到格式为 mm/dd/yyyy 的日期.

Is there a less then kludgey way of finding the difference in days between 2 dates in xslt? If so can you point me in the right direction. I am receiving dates in the format of mm/dd/yyyy.

为此使用 XSLT 2.0 (XPath 2.0):

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:my="my:my">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
     <xsl:variable name="vDate1"
        select="my:dateFromUsDate(/*/d1)"/>
     <xsl:variable name="vDate2"
        select="my:dateFromUsDate(/*/d2)"/>

   <xsl:sequence select=
   "($vDate1 - $vDate2) div xs:dayTimeDuration('P1D')"/>
 </xsl:template>

 <xsl:function name="my:dateFromUsDate" as="xs:date">
  <xsl:param name="pUsDate" as="xs:string"/>

  <xsl:sequence select=
  "xs:date(concat(substring($pUsDate,7,4),
                  '-',
                  substring($pUsDate,1,2),
                  '-',
                  substring($pUsDate,4,2)
                 )
          )
  "/>
 </xsl:function>
</xsl:stylesheet>

当此转换应用于以下 XML 文档时:

<t>
 <d1>04/06/2011</d1>
 <d2>01/11/2010</d2>
</t>

产生了想要的、正确的结果(相差 450 天):

450