Whatever you do, don’t panic!
Posts tagged convert
Morning News Update, November 23 2010
Nov 23rd
iOS 4.2 is available, adding some impressive new features and finally getting iPad’s and iPhones up to the same OS version number. And Google releases “Cloud Connect”, a plugin that syncs Microsoft Office and Google Docs.
XSLT: convert ISO 8601 DateTime format
Apr 10th
Today I did a little bit of XSLT coding and stumbled over the problem to convert ISO 8601 date strings into a more human readable format.
Specifically I wanted to turn a date of the form 2008-04-10T16:12:27Z to the typical german format of 10.04.2008 16:12:27 and spit the whole thing out as HTML to display it on a webpage.
After a bit of time I came up with the following XSLT (sanitized):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:element name="div">
<xsl:element name="abbr">
<xsl:attribute name="title">
<xsl:value-of select="create_dt"/>
<xsl:value-of select="’Z'"/>
</xsl:attribute>
<xsl:attribute name="class">dtstart</xsl:attribute>
<xsl:call-template name="FormatDate">
<xsl:with-param name="DateTime" select="create_dt"/>
</xsl:call-template>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template name="FormatDate">
<xsl:param name="DateTime" />
<xsl:variable name="mo">
<xsl:value-of select="substring($DateTime,6,2)" />
</xsl:variable>
<xsl:variable name="day">
<xsl:value-of select="substring($DateTime,9,2)" />
</xsl:variable>
<xsl:variable name="year">
<xsl:value-of select="substring($DateTime,1,4)" />
</xsl:variable>
<xsl:variable name="time">
<xsl:value-of select="substring($DateTime,12,8)" />
</xsl:variable>
<xsl:variable name="hh">
<xsl:value-of select="substring($time,1,2)" />
</xsl:variable>
<xsl:variable name="mm">
<xsl:value-of select="substring($time,4,2)" />
</xsl:variable>
<xsl:variable name="ss">
<xsl:value-of select="substring($time,7,2)" />
</xsl:variable>
<xsl:value-of select="$day"/>
<xsl:value-of select="’.'"/>
<xsl:value-of select="$mo"/>
<xsl:value-of select="’.'"/>
<xsl:value-of select="$year"/>
<xsl:value-of select="’ ‘"/>
<xsl:value-of select="$hh"/>
<xsl:value-of select="’:'"/>
<xsl:value-of select="$mm"/>
<xsl:value-of select="’:'"/>
<xsl:value-of select="$ss"/>
</xsl:template>
</xsl:stylesheet>
Using this example and the mighty power of substring() it should be pretty easy to convert any date format into an other one.










