代码之家  ›  专栏  ›  技术社区  ›  mlissner

如何将XSLT2.0日期持续时间转换为字符串?

  •  3
  • mlissner  · 技术社区  · 14 年前

    <xsl:template match="moveInDate">
        <xsl:value-of select="current-date() - xs:date(.)"/>
    </xsl:template>
    

    因为我只需要天数,而不需要P和D,所以我知道我可以使用substring或类似的东西,但是作为XSLT的新手,我很好奇是否有比简单的字符串操作更好、更优雅的方法来实现这一点。

    1 回复  |  直到 14 年前
        1
  •  7
  •   Community Ian Goodfellow    4 年前

    你可以用 fn:days-from-duration() 把持续时间作为 xs:integer :

    days-from-duration($arg as xs:duration?) xs:integer?

    返回一个 xs:整数 $arg

    看到了吗 XQuery 1.0 and XPath 2.0 Functions and Operators

    就你而言:

    <xsl:template match="moveInDate">
        <xsl:value-of select="days-from-duration(current-date() - xs:date(.))"/>
    </xsl:template>
    

    希望这有帮助!

    current-date() - xs:date(.) 返回为 xs:duration

    <xsl:template match="moveInDate">
      <xsl:variable name="dur" select="(current-date() - xs:date(.)) cast as xs:string"/>
      <xsl:value-of select="substring-before(substring-after($dur, 'P'), 'D')"/>
    </xsl:template>