Datetime XSLT使用默认时区转换日期时间

Datetime XSLT使用默认时区转换日期时间,datetime,xslt,Datetime,Xslt,我的输入XML中有一个日期,需要转换成此格式2013-08-01T11:22:00+02:00 我的输入XML: <?xml version="1.0"?> <input>01.08.2013 11:22</input> 那么这是一个函数,并且返回时区呢?由于日期/时区很难(它们确实很难),我强烈建议不要使用字符串函数来处理它们。如果你说你使用的是什么XSLT处理器,有人可以推荐一个支持日期/时间的(扩展)函数,它做正确的事情。是否可以使用current-d

我的输入XML中有一个日期,需要转换成此格式
2013-08-01T11:22:00+02:00

我的输入XML:

<?xml version="1.0"?>
<input>01.08.2013 11:22</input>

那么
这是一个函数,并且返回时区呢?

由于日期/时区很难(它们确实很难),我强烈建议不要使用字符串函数来处理它们。如果你说你使用的是什么XSLT处理器,有人可以推荐一个支持日期/时间的(扩展)函数,它做正确的事情。是否可以使用current-dateTime()进行计算以获得所需的输出?givenDateTime+current-dateTime()-current-dateTime()将再次给出givenDateTime-但可能是时区?只需使用输出中的子字符串:2006-04-10T13:40:23.83-05:00最后六个字符是运行xslt/xquery的服务器的时区。
<?xml version="1.0"?>
<output>2013-08-01T11:22:00+02:00</output>
<xsl:template name="convertDate">
    <xsl:param name="givenDate"/>
    <!-- a) Convert `01.08.2013 11:22` to a xs:dateTime  -->
    <xsl:variable name="dd" select="substring-before($givenDate, '.')"/>
    <xsl:variable name="mmRest" select="substring-after($givenDate, '.')"/>
    <xsl:variable name="mm" select="substring-before($mmRest, '.')"/>
    <xsl:variable name="yyyyRest" select="substring-after($mmRest, '.')"/>
    <xsl:variable name="yyyy" select="substring-before($yyyyRest, ' ')"/>
    <xsl:variable name="hhRest" select="substring-after($yyyyRest, ' ')"/>
    <xsl:variable name="hh" select="substring-before($hhRest, ':')"/>
    <xsl:variable name="min" select="substring-after($hhRest, ':')"/>
    <xsl:variable name="correctDate" select="xs:dateTime(concat($yyyy,'-',$mm,'-',$dd,'T',$hh,':',$min,':','00'))"/>        

    <!-- b) Convert the standard xs:dateTime to `2013-08-01T11:22:00+02:00`  -->
    <xsl:value-of select="format-dateTime($correctDate,'[Y]-[M]-[D]T[H]:[m]:[s][z]')"/>
</xsl:template>