Author:
bzerangue
Version:
1.0
Release Date:
3 May 2009
Category:
Date & Time

Description

In the process of bringing in an external RSS feed to Symphony, I wanted to utilize the great date utility that Symphony has to show the dates all nice and pretty.

The default date utility takes an ISO date format, 2009-04-01 and off that you can convert it to April 1, 2009 or whatever you want. Well, I needed to take the external date format, RFC 2822 datetimestamp (Wed, 01 Apr 2009 12:00:00 GMT) and convert it to the ISO format so I could use the great date-time utility that is provided for us.

XSLT

View Raw
<?xml version="1.0" encoding="UTF-8" ?>
<!--
  Name: RSS feed date format to Symphony date format
  Version: 1.0
  Author: Brian Zerangue <brian.zerangue@gmail.com>
  URL: https://www.getsymphony.com/download/xslt-utilities/view/20457/
 
  Description:
  Convert RSS feed date format to Symphony date format
  Convert RFC 2822 timestamp format to ISO date format minus the time info (Symphony CMS date format)
  RFC 2822 format: Sun, 07 Jan 2007 12:00:00 GMT
  ISO 8601 format (minus the time info): 2007-01-07
-->
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:template name="format-from-rfc-to-iso">
		<xsl:param name="rfc-date"/>
		<xsl:param name="day-with-zero" select="format-number(substring(substring($rfc-date,6,11),1,2),'00')"/>
		<xsl:param name="month-with-zero">
			<xsl:if test="contains($rfc-date,'Jan')">01</xsl:if>
			<xsl:if test="contains($rfc-date,'Feb')">02</xsl:if>
			<xsl:if test="contains($rfc-date,'Mar')">03</xsl:if>
			<xsl:if test="contains($rfc-date,'Apr')">04</xsl:if>
			<xsl:if test="contains($rfc-date,'May')">05</xsl:if>
			<xsl:if test="contains($rfc-date,'Jun')">06</xsl:if>
			<xsl:if test="contains($rfc-date,'Jul')">07</xsl:if>
			<xsl:if test="contains($rfc-date,'Aug')">08</xsl:if>
			<xsl:if test="contains($rfc-date,'Sep')">09</xsl:if>
			<xsl:if test="contains($rfc-date,'Oct')">10</xsl:if>
			<xsl:if test="contains($rfc-date,'Nov')">11</xsl:if>
			<xsl:if test="contains($rfc-date,'Dec')">12</xsl:if>
		</xsl:param>
		<xsl:param name="year-full" select="format-number(substring(substring($rfc-date,6,11),7,5),'####')"/>
		<xsl:param name="rfc-date-to-iso" select="concat($year-full,'-',$month-with-zero,'-',$day-with-zero)"/>

		<xsl:value-of select="$rfc-date-to-iso"/>

	</xsl:template>
</xsl:stylesheet>

Discuss this XSLT Utility

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.3-5.6 or 7.0-7.3
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.5 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details