我有以下字符串:
input.xml中
<Request>
<ClientDt>1/6/2016 11:15:25 AM</ClientDt>
<!-- rest of input -->
</Request>
字符串的日期部分采用M / D / YYYY格式。我需要将其转换为问题标题中列出的格式,例如
的Output.xml
<Request>
<ClientDt>2016-01-06T11:15:25:000000-05:00</ClientDt>
<!-- rest of output -->
</Request>
-05:00是UTC,即这是东部时间,比UTC晚了5个小时
我最初尝试通过format-dateTime函数使用适当的参数设置值:
stylesheet.xsl
<xsl:template match="ClientDt">
<xsl:value-of select="format-dateTime(., '[Y0001]-[M01]-[D-01]T[H01]:[m01]:[s01]:[f000001]')" />
<!-- Note: yet to figure out timezone part of this -->
</xsl:template>
但是收到错误声明日期时间无效(非数字年份组件)。为了看看它是否会起作用,否则我将日期部分更改为2016-1-6并按原样保留时间,并且它会抛出错误,说明月份必须是2位数。再次,我将输入日期调整为2016-01- 06并得到了类似的错误,这次说明日必须是2位数。
是否有任何其他标准函数可以处理dateTime的这种格式,或者其他库中的任何格式?或者我是否必须尝试将其与各种正则表达式拼凑在一起,例如,如果需要,可以在月份和日期添加零,通过concat等手动切换日期部分?我正在使用Saxon-He版本9.7.0-8