Re: [xsl] difference between an integer and current-dateTime()

Subject: Re: [xsl] difference between an integer and current-dateTime()
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 27 Mar 2020 12:05:40 -0000
Am 27.03.2020 um 11:34 schrieb Mukul Gandhi gandhi.mukul@xxxxxxxxx:
Hi all,
 B  B  I've got a number 1585039138 for example (which is number of
seconds since epoch 1970-01-01T00:00:00Z UTC). I wish to find the
duration (in minutes or seconds) between previous number and
current-dateTime(). I wish to do this with XSLT (2/3 both are fine with
me, preferably non schema aware). I expect this difference to be always
positive, since the number will change depending on what moment (at any
moment, I wish to find this difference) it is calculated. How can I do
that?

You can compute the difference between two dates or dateTimes with the
substraction operator:

current-dateTime() - xs:dateTime('1970-01-01T00:00:00Z')

That gives you dayTimeDuration e.g. P18348DT11H54M53.258S I think.

You could convert your epoch seconds to a dateTime with

xs:dateTime('1970-01-01T00:00:00Z') + xs:dayTimeDuration('PT' ||
1585039138 || 'S')

I think, i.e. by adding the seconds as a duration to the epoch dateTime.

Thus

current-dateTime() - (xs:dateTime('1970-01-01T00:00:00Z') +
xs:dayTimeDuration('PT' || 1585039138 || 'S'))

will give you the difference as a dayTimeDuration between the current
dateTime and the number.


Finally you could divide that duration by one of 1S


(current-dateTime() - (xs:dateTime('1970-01-01T00:00:00Z') +
xs:dayTimeDuration('PT' || 1585039138 || 'S'))) div
xs:dayTimeDuration('PT1S')


I used the XPath 3 || string concat operator in some places but the XPath 2 concat function would work as well, the whole date/dateTime and duration arithmetics is an essential part since XSLT/XPath 2 anyway.

Current Thread