XPath 1.0中的时间字符串比较 [英] Time string comparison in XPath 1.0
问题描述
我在XPath1.0中得到了以下比较:
I've got this comparison in XPath1.0:
number(substring(translate(translate(translate(@ pub-date,'-',''),':',''),'',''),5,4)+ substring(translate( translation(translate(@ pub-date,'-',''),':',''),'',''),2,3)+ substring(translate(translate(translate(@ pub-date, '-',''),':',''),'',''),0,2)+ substring(translate(translate(translate(@ pub-date,'-',''),' :',''),'',''),9,6))>数字(substring(translate(translate(translate(@ pub-date2,'-',''),':','') ,'',''),5,4)+ substring(translate(translate(translate(@ pub-date2,'-',''),':',''),'',''),2 ,3)+ substring(translate(translate(translate(@ pub-date2,'-',''),':',''),'',''),0,2)+ substring(translate(translate(translate (translate(@ pub-date2,'-',''),':',''),'',''),9,6))
number(substring(translate(translate(translate(@pub-date,'-',''),':',''),' ','') ,5,4)+substring(translate(translate(translate(@pub-date,'-',''),':',''),' ',''),2,3)+substring(translate(translate(translate(@pub-date,'-',''),':',''),' ',''),0,2)+substring(translate(translate(translate(@pub-date,'-',''),':',''),' ',''),9,6)) > number(substring(translate(translate(translate(@pub-date2,'-',''),':',''),' ','') ,5,4)+substring(translate(translate(translate(@pub-date2,'-',''),':',''),' ',''),2,3)+substring(translate(translate(translate(@pub-date2,'-',''),':',''),' ',''),0,2)+substring(translate(translate(translate(@pub-date2,'-',''),':',''),' ',''),9,6))
这将比较@pub-date
和@pub-date2
.这些字符串具有以下格式:dd-mm-yyyy hh:mm:ss
.
This compares @pub-date
and @pub-date2
. These Strings have this format: dd-mm-yyyy hh:mm:ss
.
问题是:是@pub-date
= "30-07-2014 23:59:59"
并且@pub-date2
= "30-08-2014 00:00:00"
,@pub-date
被认为大于@pub-date2
.这个XPath怎么了?
The problem is: is @pub-date
= "30-07-2014 23:59:59"
and @pub-date2
= "30-08-2014 00:00:00"
, @pub-date
is considered bigger than @pub-date2
. What's wrong with this XPath?
推荐答案
首先,表达式
translate(translate(translate(@pub-date,'-',''),':',''),' ','')
可以写得更简洁
translate(@pub-date,'-: ','')
第二,更重要的是,substring()的参数是错误的.如果要从30072014中拉出Y,M和D,则需要(5,4),(3,2)和(1,2),而此表达式可抓取(5,4),(2,3 )和(0,2).
Secondly, and more importantly, the arguments to substring() are wrong. If you want to pull out the Y, M, and D from 30072014 then you want (5,4), (3,2), and (1,2) whereas this expression grabs (5,4), (2,3), and (0,2).
这篇关于XPath 1.0中的时间字符串比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!