如何將給定日期的年份與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(在這種情況下會產生很大的差異)。 –