Validación de RSS: fechas en formato RFC-822
- pertosda
- 0
La especificación de documentos RSS 2.0 incluye varias etiquetas para fechas, como pueden ser <,pubDate>, y <,lastBuildDate>,. 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:
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.