首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在XSLT 2.0中使用日期/时间戳计算持续时间?

在XSLT 2.0中使用日期/时间戳计算持续时间?
EN

Stack Overflow用户
提问于 2014-07-31 10:16:07
回答 2查看 1.8K关注 0票数 1

我使用的是XSLT 2.0,并且正在尝试计算WS-Trust消息中的,其中有和元素,因此我需要确定两个日期/时间戳之间的天数,例如:

2014-06-28T03:00:12Z和2014-06-26T13:00:02Z

我试过使用:

代码语言:javascript
代码运行次数:0
运行
复制
<xsl:sequence select="fn:days-from-duration(xs:dateTime('2014-06-26T13:00:02Z')-xs:dateTime('2014-06-27T13:00:02Z'))"/>

但是上面给我的结果是"-1",也就是一个整数。

如果我可以得到小时或分钟的持续时间,我可能会计算小数天,但我尝试使用:

代码语言:javascript
代码运行次数:0
运行
复制
<xsl:sequence select="fn:hours-from-duration(xs:dateTime('2014-06-26T13:00:02Z')-xs:dateTime('2014-06-27T13:00:02Z'))"/>

或者:

代码语言:javascript
代码运行次数:0
运行
复制
<xsl:sequence select="fn:minutes-from-duration(xs:dateTime('2014-06-26T13:00:02Z')-xs:dateTime('2014-06-27T13:00:02Z'))"/>

这两个都给了我"0“。

谁能告诉我如何计算以小时或分钟为单位的持续时间?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-07-31 12:18:14

days-from-duration()hours-from-duration()minutes-from-duration()extraction函数:每个函数都从持续时间中提取单个组件。在您的示例中,您将分别获得-1、0和0,因为您的两个dateTimes之间的持续时间是-1天0小时0分钟。

如果你想用小数天来计算持续时间,可以试试:

代码语言:javascript
代码运行次数:0
运行
复制
<xsl:variable name="duration" select="xs:dateTime('2014-06-27T12:36:00Z')-xs:dateTime('2014-06-26T00:00:00Z')" />

<xsl:value-of select="days-from-duration($duration) + hours-from-duration($duration) div 24 + minutes-from-duration($duration) div 1440"/>

这将返回1.525,表示P1DT12H36M的持续时间(1天12小时36分钟)。

票数 1
EN

Stack Overflow用户

发布于 2014-08-01 04:42:38

减去两个双精度值得到一个双精度值,然后将其除以xs:dayTimeDuration('P1D') (使用div运算符),得到xs: dateTime形式的天数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25049795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档