使用XSLT将dateand以XML格式转换为UTC时区

时间:2011-12-29 14:24:44

标签: xml xslt

我有一个XML文档,其日期为标准ISO 8601格式。像这样:


2011-11-29T04:15:22-08:00

我想使用XSLT将时间转换为以下格式的UTC和输出日期:


2011-11-29 12:15:22

怎么做?

提前致谢。

2 个答案:

答案 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答案)