xsl-list
[Top] [All Lists]

Re: [xsl] XSLT 2.0/XPath 2.0 Date arithmetic

2006-05-18 05:55:21
cknell(_at_)onebox(_dot_)com wrote:

Given a parameter, let's call it "today" in the form of this string "20060517", how do I create a variable, let's call 
it "tMinus1" such that it represents a day earlier than "20060517", that would be "20060516". So long as 
"$today" isn't the first day of a month, a simple subtraction and followed by a type cast that I don't grasp would do the trick.

What I'm looking for is guidance on date arithmetic.

Thanks.


If you're using Xalan and Java, you can always use the (non-standard) extensions.
Something along the following lines (not tested):

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
   xmlns:java="http://xml.apache.org/xalan/java";
   exclude-result-prefixes="java">
...
   <xsl:variable name="today">20060517</xsl:variable>
<xsl:variable name="sdf" select="java:java.text.SimpleDateFormat.new('yyyymmdd')" /> <xsl:variable name="tMinus1" select="java:format($sdf, (1000*60*60*24)+java:Long(java:parse($sdf, $today)))" />
...
</xsl:stylesheet>

See http://xml.apache.org/xalan-j/extensions.html#ext-func-calls
JavaScript is also available/possible

--~------------------------------------------------------------------
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>
--~--