Xslt 日期转换YYYYMMDD到YYYY-MM-DD
我有一个格式为YYYYMMDD的日期字符串,例如20140330 在xsl 1.0中,我想将日期字符串转换为YYYY-MM-DD格式,例如2014-03-30 我尝试使用了几个日期函数,但都不起作用。Xslt 日期转换YYYYMMDD到YYYY-MM-DD,xslt,xpath,xslt-1.0,Xslt,Xpath,Xslt 1.0,我有一个格式为YYYYMMDD的日期字符串,例如20140330 在xsl 1.0中,我想将日期字符串转换为YYYY-MM-DD格式,例如2014-03-30 我尝试使用了几个日期函数,但都不起作用。 有人能帮我转换日期吗?您可以使用substring函数。给定以下输入XML: <root>20140330</root> XSLT1.0没有任何“日期函数”(与日期相关的函数是XPath2.0的一部分),您必须使用纯字符串操作。感谢您的响应。现在我将软件升级为使用xpat
有人能帮我转换日期吗?您可以使用substring函数。给定以下输入XML:
<root>20140330</root>
XSLT1.0没有任何“日期函数”(与日期相关的函数是XPath2.0的一部分),您必须使用纯字符串操作。感谢您的响应。现在我将软件升级为使用xpath 2,并尝试使用函数xp20:format dateTime('19711018','[Y0001]-[M01]-[D01'),但该函数不返回任何值。。我期待着1971年10月18日。。。不确定我是否遗漏了什么!!“我现在升级了我的软件以使用xpath 2”发布了一个新问题,谢谢。它起作用了。现在我尝试使用xpath函数。现在我将软件升级为使用xpath 2,并尝试使用函数xp20:format dateTime('19711018','[Y0001]-[M01]-[D01'),但该函数不返回任何值。。我期待着1971年10月18日。。。不确定我是否遗漏了什么@jayak-
format-dateTime()
是一个XSLT2.0函数;不是XPath。第一个参数必须是xs:dateTime
。您正在尝试格式化日期,而不是日期时间。您应该改用格式-date()
。但是,format-date()
的第一个参数是xs:date
。字符串19711018
不能转换为xs: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')
)
<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>
2014-03-30