将日期时间转换为ISO 8601格式

时间:2019-07-21 20:02:03

标签: xslt

我有一个保存日期时间值的以下元素。

我正在尝试将其转换为ISO 8601 UTC,基本上,我正在尝试执行以下操作:

输入:

"lastUpdatedAt": "2019-07-21T13:47:44.000+0100"

所需的输出:

"lastUpdatedAt": "2019-07-21T12:47:44.000Z"

到目前为止,我已经尝试过:

  <xsl:template match="map/string[@key='lastUpdatedAt']">
    <xsl:variable name="lastUpdatedAt" select="."/>
      <string key="lastUpdatedAt">
        <xsl:value-of select="replace(normalize-space($lastUpdatedAt),
          '^(\d{2})-(\d{2})-(\d{4})\s+(.*)','$3-$1-$2T$4Z')"/>
      </string>
  </xsl:template> 

我得到的输出:

"lastUpdatedAt": "2019-07-21T13:47:44.000+0100"

1 个答案:

答案 0 :(得分:0)

您的正则表达式期望\s之后有空格^(\d{2})-(\d{2})-(\d{4})

从输入日期起将其更改为T

  <xsl:value-of select="replace(normalize-space($lastUpdatedAt),
          '^(\d{4})-(\d{2})-(\d{2})T+(.*)','$1-$2-$3T$4Z')"/>