格式持续时间

时间:2018-04-04 15:33:11

标签: xml xslt-2.0

我有两个时间戳,以毫秒为单位。我计算它们之间的持续时间,但结果也有毫秒值,但我只想要秒。

第一个时间戳,

  

1519077042063

第二个时间戳

  

1519077045841

XSLT后的结果

  

3.778

xs:dateTime(1519077045841)-xs:dateTime(1519077042063))

通缉结果

  

3

修改

以下是我如何根据时间戳计算dateTime。

<xsl:variable name="start" select='xs:dateTime("1970-01-01T00:00:00") + 1519077042063 * xs:dayTimeDuration("PT0.001S")'/>

<xsl:variable name="stop" select='xs:dateTime("1970-01-01T00:00:00") + 1519077045841 * xs:dayTimeDuration("PT0.001S")'/>

然后我计算从开始和停止的持续时间,即PT3.778S,我只想要3.可以这样做吗?

<xsl:value-of select="xs:dateTime($stop)-xs:dateTime($start))"/>

1 个答案:

答案 0 :(得分:0)

我不知道如何直接根据xs:dateTime显示的时间戳值创建xs:dateTime(1519077045841)-xs:dateTime(1519077042063),但如果减去两个xs:dateTime,则会得到一个持续时间,然后,您可以提取seconds-from-duration并在其上调用floor函数:floor(seconds-from-duration($dateTime1 - $dateTime2))

所以编辑中的样本

   <xsl:variable name="start" select='xs:dateTime("1970-01-01T00:00:00") + 1519077042063 * xs:dayTimeDuration("PT0.001S")'/>
   <xsl:variable name="stop" select='xs:dateTime("1970-01-01T00:00:00") + 1519077045841 * xs:dayTimeDuration("PT0.001S")'/>
   <xsl:value-of select="floor(seconds-from-duration($stop - $start))"/>

提供3http://xsltransform.hikmatu.com/nbUY4ks