[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] The UNIX epoch, or time since Jan 01, 1970


Subject: Re: [xsl] The UNIX epoch, or time since Jan 01, 1970
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 21 May 2012 12:33:35 -0400

See pages 340 and 344 of my "Practical Transformation Using XSLT and XPath" book for a bit more detail.

For those without a copy, I've made it available from our web site on a "Try and buy" premise: you download the complete book and if you like it I ask you to be honest about it and pay for it ... if you don't like it, then please delete it.

The book is a superset of the material I use in the instructor-led class (not including hands-on exercises) that I have the privilege of teaching around the world. If you have questions about the book or the teaching, please ask directly and not on the list.

. . . . . . . . . . . Ken

At 2012-05-21 12:28 -0400, G. Ken Holman wrote:
At 2012-05-21 17:06 +0100, Florent Georges wrote:
  As part of sending an OAuth request to connect to Twitter, I have to
get a timestamp, as the number of seconds elapsed from Jan 01, 1970
(AKA the UNIX epoch).  The simplest solution I could come with is the
following:

Remember you can do arithmetic with durations. I think this is even simpler:


T:\ftemp>xslt2 florent.xsl florent.xsl
<?xml version="1.0" encoding="UTF-8"?>1337617644.811
T:\ftemp>xslt2 florent.xsl florent.xsl
<?xml version="1.0" encoding="UTF-8"?>1337617649.455
T:\ftemp>type florent.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     xmlns:my="urn:X-florent"
  version="2.0">

<xsl:template match="/">
  <xsl:value-of select="my:current-timestamp()"/>
</xsl:template>

<xsl:function name="my:current-timestamp" as="xs:string">
<!-- the UNIX epoch -->
<xsl:variable name="epoch" select="xs:dateTime('1970-01-01T00:00:00Z')"/>


       <!-- time since then -->
       <xsl:variable name="diff"  select="current-dateTime() - $epoch"/>
       <!-- number of seconds -->
       <xsl:sequence select="string($diff div xs:dayTimeDuration('PT1S'))"/>
    </xsl:function>

</xsl:stylesheet>
T:\ftemp>

I hope this helps.

. . . . . . . . Ken


--
Public XSLT, XSL-FO, UBL and code list classes in Europe -- Oct 2012
Contact us for world-wide XML consulting and instructor-led training
Free 5-hour lecture: http://www.CraneSoftwrights.com/links/udemy.htm
Crane Softwrights Ltd.            http://www.CraneSoftwrights.com/s/
G. Ken Holman                   mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Google+ profile: https://plus.google.com/116832879756988317389/about
Legal business disclaimers:    http://www.CraneSoftwrights.com/legal


Current Thread
Keywords