RE: [xsl] Converting dayTimeDuration to yearMonthDuration

Subject: RE: [xsl] Converting dayTimeDuration to yearMonthDuration
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 18 Jan 2006 15:13:38 -0000
There was a function to do this at one stage - something like
subtract-dates-yielding-yearMonthDuration - but we took it out because we
had trouble defining exactly what it should do. (If you were born on 29 Feb
1980, how old are you on 28 Feb 2006?)

One possible answer is

((current-date() - xsd:date(birthdate)) div xdt:dayTimeDuration('P1D')) 
   idiv 365.242199 
   * xdt:yearMonthDuration('P1Y')

But that may give small errors at the boundaries (i.e. on someone's
birthday).

The alternative, I think, is to extract the year/month/day components of the
two dates and do the calculation yourself.

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

> -----Original Message-----
> From: Gary Stewart [mailto:the.stewarg@xxxxxxxxx] 
> Sent: 18 January 2006 14:38
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Converting dayTimeDuration to yearMonthDuration
> 
> Hello people.
> 
> I'm sorry to bother you with questions like this. I just couldn't seem
> to find an answer anywhere else. I'm currently using XSLT 2.0 and
> taking advantage of XPath 2.0. I'm trying to get the age of someone
> based of:
> 
> (current-date() - xsd:date(birthDate))
> 
> which returns a dayTimeDuration. The issue is I'd really like to use
> years-from-duration but that expects a yearMonthDuration. I tried
> casting from dayTimeDuration to yearMonthDuration but to no avail.
> Does anyone know a way to get a year result from a dayTimeDuration?
> 
> Thanks,
> 
> Gary

Current Thread