RE: [xsl] xslt 2. Date arithmetic.

Subject: RE: [xsl] xslt 2. Date arithmetic.
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 1 Mar 2005 16:24:03 -0000
The difference between two dates is a dayTimeDuration (if they're in the
same timezone - the usual case - then it will be an integer number of days).

Subtraction of dates to give a yearMonthDuration - the old
subtractDateTimesYieldingYearMonthDuration - has been removed (as befits any
function with such a ridiculous name) because it proved too difficult to
specify it. For example, would you expect 2005-02-28 minus 2005-01-31 to be
one month, on the basis that 2005-01-31 plus one month is 2005-02-28? But
surely the difference between these two dates is the same as 2004-02-28
minus 2004-01-31?

Depending what you actually want to achieve, the best approach is probably
to extract the year/month components (year-from-date(), month-from-date())
and manipulate the values yourself.

Michael Kay
http://www.saxonica.com/  

> -----Original Message-----
> From: Pawson, David [mailto:David.Pawson@xxxxxxxxxxx] 
> Sent: 01 March 2005 15:51
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] xslt 2. Date arithmetic.
> 
> 
> <xsl:variable name="t1" 
>    select="xs:date('2002-09-01')"/>
>  <xsl:variable name="t2" select="current-date()" />
> 
>  <xsl:variable name="dur" 
>    select="xdt:yearMonthDuration($t2 - $t1)"  
> as="xdt:yearMonthDuration"
>    />
> 
>  <xsl:sequence
>  select="$dur" /> 
> 
> 
> I'm getting casting errors, and I can't see a way of resolving it.
> Error on line xx:
>   FORG0001: Cannot convert to yearMonthDuration because some 
> components are non-
> zero
> Transformation failed: Run-time errors were reported
> 
> yes.... agree they are non-zero. 
> 
> 
> 
> Any help appreciated.
> 
> 
> Regards DaveP.
> 
> **** snip here *****
> 
> -- 
> DISCLAIMER:
> 
> NOTICE: The information contained in this email and any 
> attachments is 
> confidential and may be privileged.  If you are not the intended 
> recipient you should not use, disclose, distribute or copy any of the 
> content of it or of any attachment; you are requested to notify the 
> sender immediately of your receipt of the email and then to delete it 
> and any attachments from your system.
> 
> RNIB endeavours to ensure that emails and any attachments generated by
> its staff are free from viruses or other contaminants.  However, it 
> cannot accept any responsibility for any  such which are transmitted.
> We therefore recommend you scan all attachments.
> 
> Please note that the statements and views expressed in this email and 
> any attachments are those of the author and do not 
> necessarily represent
> those of RNIB.
> 
> RNIB Registered Charity Number: 226227
> 
> Website: http://www.rnib.org.uk

Current Thread