2

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

xpathExpression.evaluate(doc, XPathConstants.BOOLEAN)

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

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

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

谢谢马库斯

4

2 回答 2

1

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

   current-dateTime() - xs:dateTime('2012-04-04T12:13:14')
 lt
   xs:dayTimeDuration('PT5H')
于 2012-04-07T18:17:20.587 回答
0

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

您正在分析的时间:

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 的内容建议。

于 2012-04-04T16:20:58.360 回答