我有一个XML文档,其日期为标准ISO 8601格式。像这样:
2011-11-29T04:15:22-08:00
我想使用XSLT将时间转换为以下格式的UTC和输出日期:
2011-11-29 12:15:22
怎么做?
提前致谢。
答案 0 :(得分:7)
以下XPath 2.0表达式生成所需的字符串值:
translate(
string(
adjust-dateTime-to-timezone(
xs:dateTime('2011-11-29T04:15:22-08:00'),
xs:dayTimeDuration('PT0H')
)
),
'TZ',
' '
)
基于XSLT的验证:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:sequence select=
"translate(
string(
adjust-dateTime-to-timezone(
xs:dateTime('2011-11-29T04:15:22-08:00'),
xs:dayTimeDuration('PT0H')
)
),
'TZ',
' '
)
"/>
</xsl:template>
</xsl:stylesheet>
当此转换应用于任何XML文档(未使用)时,将评估XPath表达式并输出此评估的结果:
2011-11-29 12:15:22
答案 1 :(得分:0)
XSLT-1.0没有日期格式化功能。
因此,您必须像处理文字一样使用它 - 请参阅相关问题Format a date in XML via XSLT
其他可能的方法是创建扩展函数(在MSXSL和.Net的情况下,请参阅同一问题中的@ 0xA3答案)