Validación de RSS: fechas en formato RFC-822

La especificación de documentos RSS 2.0 incluye varias etiquetas para fechas, como pueden ser &lt,pubDate&gt, y &lt,lastBuildDate&gt,. Para que nuestro RSS valide correctamente, será necesario que estas fechas estén en formato RFC-822, esto es algo del tipo: ‘Sun, 18 Apr 2004 00:50:00 GMT’.

Movable Type y otras herramientas generan este formato automáticamente, pero si utilizamos algún script de servidor para generar el archivo sindicado nos encontraremos ante un problemilla, pues ninguna función (al menos en ASP) convierte directamente una fecha a este formato.

Además, para que la fecha sea aceptada y el documento valide, no solamente debe cumplir con el formato, sino que debe estar indicada en inglés. Es decir, para la fecha del ejemplo anterior no valdría: ‘Dom, 18 Abr 2004 00:50:00 GMT’.

Esto supone que tengamos que crear unas funciones en nuestro script para conseguir la conversión/traducción. Para aquellos que utilicen ASP y VBScript las siguientes líneas de código consiguen este resultado:

function AbbrDia(numDia)
     select case numDia
         case 1
             AbbrDia = ‘Mon’
         case 2
             AbbrDia = ‘Tue’
         case 3
             AbbrDia = ‘Wed’
         case 4
             AbbrDia = ‘Thu’
         case 5
             AbbrDia = ‘Fri’
         case 6
             AbbrDia = ‘Sat’
         case 7
             AbbrDia = ‘Sun’
     end select
end function

function AbbrMes(numMes)
     select case numMes
         case 1
             AbbrMes = ‘Jan’
         case 2
             AbbrMes = ‘Feb’
         case 3
             AbbrMes = ‘Mar’
         case 4
             AbbrMes = ‘Apr’
         case 5
             AbbrMes = ‘May’
         case 6
             AbbrMes = ‘Jun’
         case 7
             AbbrMes = ‘Jul’
         case 8
             AbbrMes = ‘Aug’
         case 9
             AbbrMes = ‘Sep’
         case 10
             AbbrMes = ‘Oct’
         case 11
             AbbrMes = ‘Nov’
         case 12
             AbbrMes = ‘Dec’
     end select
end function

function CeroDelante(str)
     if len(str) = 1 then
         CeroDelante = ‘0’ & str
     else
         CeroDelante = str
     end if
end function

function FormatoRFC822(fecha)
     dim fechaRFC
     fechaRFC = AbbrDia(DatePart(‘w’, fecha)) & ‘, ‘ _
         & CeroDelante(DatePart(‘d’, fecha))
     fechaRFC = fechaRFC & _
         ‘ ‘ & AbbrMes(DatePart(‘m’, fecha)) & ‘ ‘ & _
         DatePart(‘yyyy’, fecha) & _
         ‘ ‘ & CeroDelante(DatePart(‘h’, fecha))
     fechaRFC = fechaRFC & ‘:’ & CeroDelante(DatePart(‘n’, fecha)) & _
         ‘:’ & CeroDelante(DatePart(‘s’, fecha)) & ‘ GMT’
     FormatoRFC822 = fechaRFC
end function

Solamente hay que llamar a la función FormatoRFC22 pasándole como parámetro la fecha que queremos convertir a RFC-822. Las funciones AbbrDia y AbbrMes devuelven la abreviatura en inglés del día de la semana y del mes respectivamente. CeroDelante (como su nombre indica) añade un 0 delante al día o al mes si es necesario.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *