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

Convert a node datetime to Epouch time using XSLT

我从具有 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 值以用于 $dateTimeValue of 2021-05-20T10:10:00:

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