日期转换YYYYMMDD到YYYY-MM-DD

jay*_*a k 2 xslt xpath xslt-1.0

我有一个格式为YYYYMMDD的日期字符串,例如20140330在xsl 1.0中我想将日期字符串转换为格式YYYY-MM-DD,例如2014-03-30

我尝试使用几个日期函数,但它没有用.任何人都可以帮我转换日期吗?

小智 5

您可以使用子字符串函数.给定以下输入XML:

<root>20140330</root>
Run Code Online (Sandbox Code Playgroud)

和以下样式表:

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

    <xsl:output omit-xml-declaration="yes"/>

    <xsl:template match="root">
        <xsl:value-of select="concat(substring(., 1, 4), '-', substring(., 5, 2), '-', substring(., 7, 2))"/>
    </xsl:template>

</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

它输出:

2014-03-30
Run Code Online (Sandbox Code Playgroud)

  • @jayak - `format-dateTime()`是一个XSLT 2.0函数; 不是XPath.第一个参数必须是`xs:dateTime`.您正在尝试格式化日期,而不是dateTime.你应该使用`format-date()`代替.但是,`format-date()`的第一个参数是`xs:date`.字符串"19711018"无法强制转换为xs:date.你必须使用`format-date(xs:date('1971-10-18'),'[Y0001] - [M01] - [D01]')`无论如何都会返回`1971-10-18` .不妨坚持使用字符串操作.(因为你现在使用的是2.0,你可以这样做:`replace('19711018','(\ d {4})(\ d {2})(\ d {2})','$ 1- $ 2 - $ 3' )`). (2认同)