我有一个标准ISO 8601格式的日期的XML文档。就像这样:使用XSLT将XML中的dateand转换为UTC时区
2011-11-29T04:15:22-08:00
我想的时间为UTC,并在下面的表格使用XSLT输出转换日期:
2011-11-29 12:15:22
如何能不能做到?
在此先感谢。
我有一个标准ISO 8601格式的日期的XML文档。就像这样:使用XSLT将XML中的dateand转换为UTC时区
2011-11-29T04:15:22-08:00
我想的时间为UTC,并在下面的表格使用XSLT输出转换日期:
2011-11-29 12:15:22
如何能不能做到?
在此先感谢。
XSLT-1.0没有日期格式化功能。
因此,你必须与它的工作与文字 - 见相关的问题Format a date in XML via XSLT
其他可能的方法是创建扩展功能(见@ 0xA3执行答案同样的问题在MSXSL和.Net的情况下)
以下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