使用XPath 2验证自日期以来的时间

时间:2012-04-04 15:48:54

标签: java xpath-2.0

如何(使用哪个XPath表达式)验证格式为“yyyy-MM-dd HH:mm:ss”的日期是否超过特定小时数?我需要使用Saxon的XPathExpression(XPath 2.0,Java 1.7)进行验证。致电时......

xpathExpression.evaluate(doc, XPathConstants.BOOLEAN)

...如果日期比例更新,我希望它返回true,例如5小时。

假设日期在此XML的dt属性中:

<msgs>
    <msg dt="2012-04-04 12:13:14"/>
</msgs>

由于 马库斯

2 个答案:

答案 0 :(得分:1)

真正的XPath 2.0解决方案是使用像这样的XPath 2.0表达式

   current-dateTime() - xs:dateTime('2012-04-04T12:13:14')
 lt
   xs:dayTimeDuration('PT5H')

答案 1 :(得分:0)

如果您想深入了解细节,可以使用子字符串自行计算时间,然后将时间值与当前日期时间进行比较:

您正在分析的时间:

boolean(100*number(substring(//msgs/msg/@dt,12,2)) + 10*number(substring(//msgs/msg/@dt,15,2)) + 1*number(substring(//msgs/msg/@dt,18,2)) > (current time + t*100)) 

其中当前时间的计算方式相同,t是您要检查的小时数。但是考虑到这两次是在同一天,所以如果你想要同时检查两者,你必须对日期值做同样的事情,所以你最好选择Slanec所做的事情。提示。