Foros del Web » Programando para Internet » ASP Clásico »

Hora atrasada al leer RSS desde ASP

Estas en el tema de Hora atrasada al leer RSS desde ASP en el foro de ASP Clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 14/01/2009, 12:23
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 6 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.
  #2 (permalink)  
Antiguo 15/01/2009, 12:21
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: Hora atrasada al leer RSS desde ASP

Pues no se que signifique farragosa , pero lamentablemente es lo que tienes que hacer .... ya sea en el cliente o en el ASP pero tu zona es una y la de yahoo en este caso es otra

Si quieres cambiar la zona horaria de tu server con respecto a la del servidor de donde obtengas las noticias, pues desde ahí es mala idea, ya que si en un futuro agregas otro RSS de otro server en otra zona horaria a la de yahoo, ¿qué vas a hacer?

ASP 3.0 no tiene una función equivalente a gedate de PHP para obtener la hora GMT ni como Net Time de .NET que permite ajustarte a cierta zona horaria, pero aún así en PHP hay que hacer sumas o restas para ajustar la hora con la que quieras trabajar con respecto a GMT
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:56.