如何使用XPath获取两个日期之间的秒数[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我正在与WSO2 ESB合作,我想知道如何在日期A和B之间获得secondes。基本上,我想在系统时间和下午12点之间计算时间。你有什么主意吗 ?我发现如何获得天数,但没有用于仅使用Xpath的secondes。我受限于Xpath因为我不能使用Java脚本。

谢谢。

xml xslt xpath wso2esb
1个回答
1
投票

基本是将两者都转换为正确的xs:dateTime对象,然后计算差异。这将为您提供dayTimeDuration。将此除以dayTimeDuration为1秒,你有几秒钟的差异。例:

<property xmlns:xs="http://www.w3.org/2001/XMLSchema" name="now" 
expression="concat(get-property('SYSTEM_DATE', 'yyyy-MM-dd'),'T',get-property('SYSTEM_DATE', 'HH:mm:ss')) "/>
<property xmlns:xs="http://www.w3.org/2001/XMLSchema" name="12pm" 
expression="concat(get-property('SYSTEM_DATE', 'yyyy-MM-dd'),'T12:00:00')"/>


<property xmlns:xs="http://www.w3.org/2001/XMLSchema" name="diff" 
expression="xs:dayTimeDuration(xs:dateTime(syn:get-property('now'))-xs:dateTime(syn:get-property('12pm'))) div xs:dayTimeDuration('PT1S')"/>

请记住,您需要在ESB / EI上为此启用xpath 2.0。您可以通过取消注释[WSO2CARBON_HOM] /repository/conf/synapse.properties文件中的以下行来执行此操作。

#synapse.xpath.dom.failover.enabled=true

还要记住,一旦你完成了,你将synapse命名空间(如get-property)中的函数与普通xpath函数组合在一起的xpath表达式将需要使用类似代码示例中的前缀。

© www.soinside.com 2019 - 2024. All rights reserved.