xsl-list
[Top] [All Lists]

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

2020-03-27 07:05:51
Am 27.03.2020 um 11:34 schrieb Mukul Gandhi 
gandhi(_dot_)mukul(_at_)gmail(_dot_)com:
Hi all,
     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.

--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>