16 Mar

How to compare dates using XSLT and find the largest one?

While working in SharePoint dataviews, we need to compare dates several times to find out a larger one. While I wondered around this and I see there is no direct function to do this.

I found a workaround which I generally use.

 

1. Create 2 variables from dates. I’m converting both dates to US format and then to a number with year, month and date sequence to ensure correctness.

 

<xsl:variable name="ExpiryDate1" select="number(ddwrt:FormatDateTime(string(@ExpirationDate), 1033, ‘yyyyMMdd’))"/>

<xsl:variable name="OtherDate2" select="number(ddwrt:FormatDateTime(string(@OtherDate), 1033, ‘yyyyMMdd’))"/>

 

2. Compare them to find out which one is greater

<xsl:choose>
<xsl:when test=’ExpirationDate-OtherDate >= 0′>

   // Do Something
</xsl:when>
<xsl:otherwise> 

  // Do Something

</xsl:otherwise>
</xsl:choose>

 

I don’t claim that this the best solution I have got, while it works very well. If you know anything better, please share!

Comments are closed.