如何将给定日期的年份与int进行比较?如何比较xsl中的日期年?
<if test="year(@varDate)>=1900">
true
</if>
凡在输入文件中的日期格式为:
<date varDate="31/12/1999" />
如何将给定日期的年份与int进行比较?如何比较xsl中的日期年?
<if test="year(@varDate)>=1900">
true
</if>
凡在输入文件中的日期格式为:
<date varDate="31/12/1999" />
如果你被卡住XSLT 1.0,最常见的方式是提取一年的一部分,就像这样:
substring-before('1994-12-31', '-')
或者,如果你的格式,让我们说dd/MM/yyyy
,你可以做:
substring-after('31/12/1999', '/')
在你的情况,这将是类似的规定:
<xsl:if test="substring-after('31/12/1999', '/') > 1900">
true
</xsl:if>
既然你没有提供的输入数据,我想你可以计算出自己的细节。你原来的问题被标记为xslt-1.0,但这已经改变。如果这意味着你可以使用XSLT 2.0或更高版本,和你有一个实际的类型化xs:date
值,你也可以使用fn:year-from-date
:
<xsl:if test="year-from-date(xs:date('1994-12-31')) > 1900">
true
</xsl:if>
因为有两条斜线这是远远不够的,使用substring-after(substring-after('31/12/1999', '/'), '/')
,如Michael's post(信贷给他)所示。
事实证明我的日期格式不同于以上解决方案 (dd/mm/yyyy)。
如果这是真的您日期格式 - i.e.both天,一个月总是填充到两位数 - 您可以使用:
<if test="substring(@varDate, 7) >= 1900">
为您的测试。
如果没有,您需要:
<if test="substring-after(substring-after(@varDate, '/'), '/') >= 1900">
请告诉我们XML输入其中的日期。 –
您标记了您的问题[tag:xslt-1.0],但您的代码显示了'xs:gYear',它是XSLT 2.0的构造函数,是不是要标记为[tag:xslt-2.0]? – Abel
请向我们展示XML输入的日期,并指出使用XSLT 1.0还是2.0(在这种情况下会产生很大的差异)。 –