RE: [xsl] Date Difference

Subject: RE: [xsl] Date Difference
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Mon, 19 Dec 2005 17:31:44 -0500

The cheap easy way to do it doesn't involve the "dateness" of your dates; it merely involves rearranging your dates into a form in which they can be meaningfully compared with each other.

If you can write the code that will create, from each of these,

12/20/2005 => 20051220
1/1/2006   => 20060101
3/15/1995  => 19950315

you see it becomes merely a numeric comparison.

Whether you can do this with the substring() function depends on whether your values include zeroes. (That is, no 1/1/2006 since 200611 isn't useful.) Operations using substring-before() and substring-after(), taking the '/' as the delimiting substring -- or the saxon or XPath 2.0 tokenize() function -- would be more dependable.

If you want your dates to have "dateness", XPath 2.0 is the way to go, and Mike H has shown the way forward. But your format is wrong for that conversion too.


At 04:56 PM 12/19/2005, you wrote:
I wrote this:

      <xsl:function name="sgfr:IsDateGreater">
            <xsl:param name="stringDate1"/>
            <xsl:param name="stringDate2"/>
            <xsl:variable name="tokenizedDate1"
select="tokenize($stringDate1, '/')"/>
            <xsl:variable name="monthPart1"
select="subsequence(($tokenizedDate1), 1, 1)"/>
            <xsl:variable name="datePart1"
select="subsequence(($tokenizedDate1), 2, 1)"/>
            <xsl:variable name="yearPart1"
select="subsequence(($tokenizedDate1), 3, 1)"/>
            <xsl:variable name="tokenizedDate2"
select="tokenize($stringDate2, '/')"/>
            <xsl:variable name="monthPart2"
select="subsequence(($tokenizedDate2), 1, 1)"/>
            <xsl:variable name="datePart2"
select="subsequence(($tokenizedDate2), 2, 1)"/>
            <xsl:variable name="yearPart2"
select="subsequence(($tokenizedDate2), 3, 1)"/>
                  <xsl:when test="yearPart1>yearPart2"><xsl:value-of
                  <xsl:when test="yearPart1=yearPart2">
                              <xsl:when test="monthPart1>monthPart2">
                                    <xsl:value-of select="true"/>
                              <xsl:when test="monthPart1=monthPart2">
test="datePart1>datePart2"><xsl:value-of select="true"/></xsl:when>

Will this work?
Or am I totally missing the point?


Tom Maciejewski

************************************************************************* This message and any attachments (the "message") are confidential and intended solely for the addressees. Any unauthorised use or dissemination is prohibited. E-mails are susceptible to alteration. Neither SOCIETE GENERALE nor any of its subsidiaries or affiliates shall be liable for the message if altered, changed or falsified.


Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.      
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
  Mulberry Technologies: A Consultancy Specializing in SGML and XML

Current Thread