sábado, 20 de octubre de 2012

Jugando con las fechas en XSL

Muchas veces en las vistas de datos o consultas de contenido. Si utilizamos SharePoint Designer e introducimos una fecha, lo hacemos de la manera:

<xsl:value-of select="@Date"/>

Dándonos como resultado una fecha como:

2015-10-23T01:10:00Z

Casi seguro, este no será el formato deseado en el que queremos que nos muestre la fecha. Afortunadamente tenemos la función ddwrt:FormatDate que nos permitirá formatear la fecha a nuestra conveniencia.

La manera de utilizarla es muy sencilla. Bastará con poner:

<xsl:value-of select="ddwrt:FormatDate(@Date, 3082, 1)"/>


Dando lugar al formato:

23/10/2012

Para conseguir esto, deberemos asegurarnos que en la cabecera hemos hecho la declaración al espacio de nombre:

xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime

Quedando nuestra cabecera de la siguiente manera:

<xsl:stylesheet 
  version="1.0" 
  exclude-result-prefixes="x d xsl msxsl cmswrt"
  xmlns:x="http://www.w3.org/2001/XMLSchema" 
  xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" 
  xmlns:cmswrt="http://schemas.microsoft.com/WebParts/v3/Publishing/runtime"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"
  xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime">
    
    <xsl:template name="Default" match="*" mode="itemstyle">
<xsl:value-of select="ddwrt:FormatDate(@Date, 3082, 1)"/>
    </xsl:template>
   
</xsl:stylesheet>

Alguno ejemplos de formatos serían:

1    23/10/2015
2    10/23/2015 1:10 AM
3    viernes, 23 de octubre de 2015
4    3:10
5    23/10/2015 3:10
6    10/23/2015 1:10 AM
7    viernes, 23 de octubre de 2015 3:10
8    10/23/2015 1:10 AM
9    10/23/2015 1:10 AM
10  10/23/2015 1:10 AM
11  10/23/2015 1:10 AM
12  3:10:00
13  23/10/2015 3:10:00
14  10/23/2015 1:10 AM
15  viernes, 23 de octubre de 2015 3:10:00

Y alguno de los lcid que nos podrían interesar serían:

1033  Inglés Estados Unidos
2057  Inglés Reino Unido
1036  Francés Francia
1031  Alemán Alemania
1040  Italiano Italia
2070  Portugués Portugal
1027  Catalán
1110  Gallego
1069  Euskera

Para lcid del resto de paises se puede consultar la siguiente página:
https://support.microsoft.com/es-es/kb/221435

Fuentes:
http://blogs.msdn.com/b/joshuag/archive/2009/03/25/custom-date-formats-in-sharepoint-xsl.aspx
https://panvega.wordpress.com/2008/12/08/ddwrtformatdate-with-different-formatflags/
https://msdn.microsoft.com/es-es/goglobal/bb964664.aspx