Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/01/2009, 12:23
Sanji
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 16 años, 4 meses
Puntos: 0
Hora atrasada al leer RSS desde ASP

Hola de nuevo a todos.

He decidido incluir en mi web las últimas noticias de Yahoo, y para ello las leo a través de su RSS de Informática. Para ello utilizo un script para leer RSS desde ASP que aparece en un montón de páginas con alguna modificación mínima para mostrar la información como quiero.

El problema, es que al mostrar la fecha de la publicación de la noticia en mi página, aparece retrasada una hora con respecto a la fecha original del xml de Yahoo.

Por ejemplo, si una noticia fue publicada hoy a las 18:00:00, en mi web aparece como publicada a las 17:00:00.

El código tal como lo utilizo es el siguiente:

Código:
<%Response.Charset = "iso-8859-1"
Dim objXML
Dim objItemList
Dim objItem
Dim cd
cd = CHR(34)
Set objXML = Server.CreateObject("MSXML2.FreeThreadedDOMDocument")
objXML.async = False
objXML.setProperty "ServerHTTPRequest", True
objXML.Load("http://d.yimg.com/cp/rss/informatica.xml")
If objXML.parseError.errorCode <> 0 Then
	'Si se produce un error, muestro su descripcion
	Response.Write "<code>" & vbCrLf
	Response.Write "<strong>Error:</strong> " & objXML.parseError.reason
	Response.Write "<strong>Linea:</strong> " & objXML.parseError.line & vbCrLf
	Response.Write "<strong>Texto:</strong> " & Server.HTMLEncode(objXML.parseError.srcText) & vbCrLf
	Response.Write "</code>" & vbCrLf
else
	'Obtengo los item
	Set objItemList = objXML.getElementsByTagName("item")
	Set objXML = Nothing
	Response.Write "<span class=" & cd & "rss" & cd & ">" &vbCrLf
	cont = 0
	For Each objItem In objItemList
		'Obtengo los nodos
		if cont < 5 then
			'Solo quiero mostrar 5 noticias
			TituloRSS = objItem.childNodes(1).text
			LinkRSS = objItem.childNodes(2).text
			DescripcionRSS = objItem.childNodes(5).text
			cadena1 = objItem.childNodes(4).text
			cadena2 = right(cadena1, 26)
			FechaRSS = left(cadena2, 20)
			Response.Write "<a href=" & cd & LinkRSS & cd &" target=" & cd & "_ablank" & cd & " title=" & cd & "Ver noticia completa" & cd & ">" & TituloRSS & "</a><br/></span>" & vbCrLf
			Response.Write "<span class=" & cd & "frss" & cd & ">Publicado el " & FechaRSS & "</span><br/>" & vbCrLf
			Response.Write "<span class=" & cd & "rss" & cd & ">" & DescripcionRSS & "<br/><br/>" & vbCrLf
			cont = cont + 1
		end if
	Next
	Response.Write "</span>" &vbCrLf
	Response.Write "<p>&Uacute;ltima comprobaci&oacute;n/actualizaci&oacute;n de las noticias el " & Date() & " a las " & Time() & "</p>"
end if
Set objItemList = Nothing%>
Para solucionar éste problema se me ha ocurrido leer el trozo de la cadena que muestra la hora y con un select, mostrar una hora menos de la leída, pero es una solución un poco farragosa y cutre, además pienso que tiene que haber alguna forma más correcta de hacer ésto, ya que tiene toda la pinta de tener que ver con los husos horarios.

¿Se le ocurre a alguien alguna solución para éste problema?

Gracias y un saludo.