2

我的输入 XML01.08.2013 11:22中有一个日期需要转换成这种格式2013-08-01T11:22:00+02:00

我的输入 XML:

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

期望的输出

<?xml version="1.0"?>
<output>2013-08-01T11:22:00+02:00</output>

到目前为止我做了什么:

  1. 转换01.08.2013 11:22为 xs:dateTime OK(使用我自己的函数)
  2. 将标准 xs:dateTime 转换为2013-08-01T11:22:00+02:00Here 我失败了,因为我没有定义时区。我需要采用服务器默认时区(夏季夏令时可能会更改)

首先,我搜索了一个标准操作,但没有找到任何东西。所以我创建了自己的基于字符串的函数,将输入转换为标准日期,这是有效的。

但是现在我的输出 2) 不起作用,因为我没有时区,所以我的输出总是2013-8-1T11:22:00没有时区....

如何将时区添加到日期以便我的输出正确?

或者一般来说,我怎样才能转换01.08.2013 11:222013-08-01T11:22:00+02:00

<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>
4

1 回答 1

0

哪个<xsl:value-of select="current-dateTime()"/>XPATH 2.0 函数并返回时区呢?

于 2013-10-18T21:53:52.280 回答