如何在xsl中比较日期的年份



如何将给定日期的年份与int进行比较?

<if test="year(@varDate)>=1900">
true
</if>

其中输入文件中的日期格式为:

<date varDate="31/12/1999" />

如果您坚持使用XSLT 1.0,最常见的方法是提取年份部分,如下所示:

substring-before('1994-12-31', '-')
或者,如果你的格式是,比如dd/MM/yyyy,你可以输入1:
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>

1这是不够的,因为有两个斜杠,使用substring-after(substring-after('31/12/1999', '/'), '/'),正如在Michael的帖子中看到的(归功于他)。

原来我的日期是在一个不同的格式,在上面的解决方案(dd/mm/yyyy)。

如果这真的是您的日期格式-即日期和月份总是填充为两位数字-您可以使用:

<if test="substring(@varDate, 7) >= 1900">

作为你的测试。

如果没有,则需要:

<if test="substring-after(substring-after(@varDate, '/'), '/') >= 1900">

相关内容

  • 没有找到相关文章

最新更新