xsl-list
[Top] [All Lists]

RE: Q - Parsing & Manipulating Strings from XSL

2005-05-30 02:13:07
I have another question: Another number is returned as type string.
This represents time in minutes. For e.g for '315',  I want to do is
format it as 5 hrs 15 mins.

The formula is:

mins = ( (315 mod 60) div 100 ) * 60
hrs = 315 - (315 mod 60)

How can I do this in Xquery ? This data is returned in a 
<JrnyTm></JrnyTm> tag.


(Your previous question asked for an XSLT solution, you're now asking for
XQuery. In principle XQuery is off-topic for this list, but in practice, you
can use the same approach in both. But the decimal-format/format-number
solution I gave you earlier is XSLT-only)

You've got a choice between using numeric arithmetic or duration arithmetic.
It's probably cleanest to use duration arithmetic though it's a bit verbose.

declare variable $one-minute := xdt:dayTimeDuration('PT1M')

then

let $time := xs:integer(JrnyTm) * $one-minute,
    $hours := hours-from-duration($time),
    $minutes := minutes-from-duration($time)
return
    concat($hours, ' hrs ', $minutes, ' minutes ')

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



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--