如何格式化日期字符串以比较两个字符串?

时间:2015-10-14 18:01:30

标签: xml xslt

我想用xslt代码做的是比较两个日期。但是,2个元素中的日期格式不同。出于这个原因,我的代码没有显示日期。

如何修改我的xslt代码以实现我的目标?

XSLT代码

<xsl:for-each select="Charge[($pCallType='Deleted') or (Deleted!='true') or (string-length(Deleted)=0)]/
    ChargeHistory[($pCallType='Deleted') or (Deleted!='true') or (string-length(Deleted)=0) or (TimestampChange > ancestor::ControlPoint/@Timestamp)][@Stage='Warrant Issued'][last()]">

包含我正在比较的日期和时间的2个xml元素

<ControlPoint Timestamp="9/28/2015 1:26:26 PM"></ControlPoint>

<TimestampChange>09/28/2015 13:26:30</TimestampChange>

1 个答案:

答案 0 :(得分:0)

您可以使用以下表达式:

  10000000000 * substring(TimestampChange, 7, 4) 
+ 100000000 * substring(TimestampChange, 1, 2) 
+ 1000000 * substring(TimestampChange, 4, 2)
+ 10000 * substring(TimestampChange, 12, 2)
+ 100 * substring(TimestampChange, 15, 2)
+ substring(TimestampChange, 18, 2)

TimestampChange字符串转换为数字(在您的示例中为20150928132630)。

使用类似的逻辑将ControlPoint/@Timestamp字符串转换为可比较的数字(由于缺少填充和使用12小时制,这将更加困难。)

在XSLT 2.0中,您需要先将子字符串转换为数字,然后才能将它们相乘。