如何将给定日期的年份与int进行比较?
<if test="year(@varDate)>=1900">
true
</if>
输入文件中日期的格式为:
<date varDate="31/12/1999" />
答案 0 :(得分:1)
如果您坚持使用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's post中所示(归功于他)。
答案 1 :(得分:1)
事实证明我的日期格式与上面的解决方案不同 (日/月/年)。
如果那个真的你的日期格式 - 即天数和月份总是填充到两位数 - 你可以使用:
<if test="substring(@varDate, 7) >= 1900">
作为你的考试。
如果没有,您需要:
<if test="substring-after(substring-after(@varDate, '/'), '/') >= 1900">