使用XSLT将节点日期时间转换为Epouch时间



我从具有CREATION_DATE节点的其他系统获得xml。

<CREATION_DATE>20/05/2021 10:10:00 </CREATION_DATE>

我必须把这个节点转换成unix毫秒时间比如

<CREATION_DATE>161273897651200 </CREATION_DATE>

我的XSLT无法转换它。

<xsl:if test="/CREATION_DATE != ''" >
<creation_date>

<xsl:variable name="dateTimeValue"/>
<xsl:value-of select="(/CREATION_DATE,'0')[.
ne ''][1]"/>
<xsl:sequence select=
"( xs:dateTime($dateTimeValue) - xs:dateTime('1970-01-01T00:00:00') )
div
xs:dayTimeDuration('PT1S')
"/>
</creation_date>
</xsl:if>

不知道哪里不对,请帮忙

CREATION_DATE值不是有效的dateTime格式字符串。因此,您需要首先构造一个正确格式化的dateTime值,用于2021-05-20T10:10:00$dateTimeValue:

<xsl:if test="/CREATION_DATE != ''" >
<creation_date>
<xsl:variable name="dateTimeSeq" select="tokenize(/CREATION_DATE, ' ')"/>
<xsl:variable name="dateTimeValue" select="concat(string-join(reverse(tokenize($dateTimeSeq[1], '/')), '-'), 'T', $dateTimeSeq[2])"/>         
<xsl:sequence select=
"( xs:dateTime($dateTimeValue) - xs:dateTime('1970-01-01T00:00:00') )
div
xs:dayTimeDuration('PT1S')
"/>     
</creation_date>
</xsl:if>

最新更新